Не получается программно нажать ссылку
Вот фрагмент кода:
<div class="login_box_content">
<div style="position:relative;z-index:50;"> <form action="/start?action=login_to_game_world" method="post" id="loginform">
<div class="loginform-inner" style="display: none; ">
<div>
<input type="hidden" id="world" name="world" value="">
<input type="hidden" id="facebook_session" name="facebook_session" value="">
<input type="hidden" id="facebook_login" name="facebook_login" value="">
<input type="hidden" name="portal_sid" value="">
</div>
<div id="login_form_inner">
<div class="loginform-inner-wrap" style="position: relative; height: 24px;">
<label for="name" class="login_text">Игровое имя:</label>
<input id="name" name="name" type="text" value="" class="login_fields">
</div>
<div class="loginform-inner-wrap" style="position: relative; height: 24px;">
<label for="password" class="login_text">Пароль:</label>
<input id="password" name="password" type="password" class="login_fields">
</div>
<div id="lost_pw" class="small">
<a href="/start/change_password?action=index">Забыли пароль?</a>
</div>
<div id="remember">
<label>
<input type="checkbox" id="autologin" name="autologin">
Оставаться в системе </label>
</div>
</div>
<div class="loginform-inner-wrap loginform-inner-wrapsubmit" id="login_button">
<a class="button " href="#" onclick="return submit_form_light('loginform')">
<span class="left"><span class="right">
<span class="middle">Вход</span>
</span></span>
<span style="clear:both;"></span>
</a> <div class="facebook-login">или подключить к <img src="/images/game/fb_connect.png" alt="" style="width:14px; cursor: pointer" onclick="GrepoFacebook.master.facebook_login_register('login');"></div>
</div>
</div>
<div id="worlds" style="overflow-x: hidden; overflow-y: hidden; display: block; height: 37.0864px; margin-top: 0px; margin-bottom: 11.277000000000001px; padding-top: 0px; padding-bottom: 0px; "><span><b>Выберите мир:</b></span><div><ul><li><a>Альфа</a></li><li><a>другие миры</a></li><li><a class="settings_button" href="/start/index?action=show_settings">Настройки</a><a class="logout_button" href="#">Выход</a></li></ul></div></div></form>
</div>
</div>
<div class="bottom_left">
<div class="bottom_right">
<div class="bottom_center">
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
Там есть ссылка <a>Альфа</a> Мне нужно программно на не нажать. Вот так нахожу эту ссылку в коде:
document.getElementById('worlds').getElementsByTagName('a')[0]
Перепробовал onclick(), click(), submit(), ничего не срабатывает... Помогите, пожалуйста, разобраться... Походу что-то нужно делать с <form action="/start?action=login_to_game_world" method="post" id="loginform">, но я не знаю ЧТО... |
А что сообщает косноль браузера?
|
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ru" lang="ru" dir="ltr">
<head>
</head>
<body>
<div class="login_box_content">
<div style="position:relative;z-index:50;"> <form action="/start?action=login_to_game_world" method="post" id="loginform">
<div class="loginform-inner" style="display: none; ">
<div>
<input type="hidden" id="world" name="world" value="">
<input type="hidden" id="facebook_session" name="facebook_session" value="">
<input type="hidden" id="facebook_login" name="facebook_login" value="">
<input type="hidden" name="portal_sid" value="">
</div>
<div id="login_form_inner">
<div class="loginform-inner-wrap" style="position: relative; height: 24px;">
<label for="name" class="login_text">Игровое имя:</label>
<input id="name" name="name" type="text" value="" class="login_fields">
</div>
<div class="loginform-inner-wrap" style="position: relative; height: 24px;">
<label for="password" class="login_text">Пароль:</label>
<input id="password" name="password" type="password" class="login_fields">
</div>
<div id="lost_pw" class="small">
<a href="http://javascript.ru/forum/">Забыли пароль?</a>
</div>
<div id="remember">
<label>
<input type="checkbox" id="autologin" name="autologin">
Оставаться в системе </label>
</div>
</div>
<div class="loginform-inner-wrap loginform-inner-wrapsubmit" id="login_button">
<a class="button " href="#" onclick="return submit_form_light('loginform')">
<span class="left"><span class="right">
<span class="middle">Вход</span>
</span></span>
<span style="clear:both;"></span>
</a> <div class="facebook-login">или подключить к <img src="/images/game/fb_connect.png" alt="" style="width:14px; cursor: pointer" onclick="GrepoFacebook.master.facebook_login_register('login');"></div>
</div>
</div>
<div id="worlds" style="overflow-x: hidden; overflow-y: hidden; display: block; height: 37.0864px; margin-top: 0px; margin-bottom: 11.277000000000001px; padding-top: 0px; padding-bottom: 0px; "><span><b>Выберите мир:</b></span><div><ul><li><a>Альфа</a></li><li><a>другие миры</a></li><li><a class="settings_button" href="/start/index?action=show_settings">Настройки</a><a class="logout_button" href="#">Выход</a></li></ul></div></div></form>
</div>
</div>
<div class="bottom_left">
<div class="bottom_right">
<div class="bottom_center">
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<button id="but00" onclick="Onclk()" style="position:absolute;-z-index:-100;">Автоклик</button>
<script>
function Onclk() {
document.getElementById('loginform').getElementsByTagName('a')[0].click();
}
alert("Сейчас нажмём программно!")
setTimeout("document.getElementById('but00').click();")
</script>
</body>
</html>
|
Цитата:
|
Цитата:
Есть и другие причины почему это не срабатывает. |
ArtemKrass,
Какой браузер ? |
<a>Альфа</a> Тут нет ни идентификатора, ни onclick атрибута - ничего. Как же тогда идет привязка обработчика на той странице? |
В общем я пишу приложение на C#.
В приложении использую awesomium (библиотекf для интеграции браузера в приложение). По-моему движок Chrome. Для заполнения форм и нажатия кнопок использую JavaScript. Все было хорошо... Но вот на этой ссылке застрял, два дня уже мучаюсь... |
Цитата:
|
Цитата:
|
ArtemKrass,
А мой пример у Вас не работает при "Посмотреть" И браузер не указали |
Я пишу на C#, сейчас в нем же понадобилось использовать немного JavaScript. До этого с JavaScript практически не сталкивался. Пожалуйста помогите на моем примере... Заглянул по ссылке о dispatchEvent... Темный лес...
|
Цитата:
|
Цитата:
У меня работает в Chrome - ось ХP (Там в примере переход на текущий форум http://javascript.ru/forum/ (в окошке |
Цитата:
Цитата:
<button onclick="alert('Клик!')">Целевой элемент</button>
<script>
var target = document.querySelector('button');
var event = document.createEvent('MouseEvents');
event.initMouseEvent('click', true, true, window, 1, 0, 0, 0, 0, false, false, false, false, 1, null);
var counter = 3;
var message = document.body.appendChild(document.createElement('div'));
(function(){
message.textContent = 'Автоклик через ' + counter;
if (counter == 0) {
target.dispatchEvent(event);
} else {
counter--;
setTimeout(arguments.callee, 1000);
}
})();
</script>
http://www.w3.org/TR/DOM-Level-2-Eve...nts-MouseEvent |
Не могу разобраться... Как это можно применить к моему коду?
|
Изменить селектор в 3й строчке и вместо 7-17 строчек оставить только 12ю
|
Мы видимо о разных вещах разговариваем...
Я пишу небольшой бот для авторизации на сайте (на C#). Чтобы заполнять данные и нажимать кнопки мне нужен JavaScript. Программно заполнять логин и пароль у меня получилось, нажимать на кнопки тоже... А вот перейти по этой злополучной ссылке никак. Соответственно код HTML поменять не могу, так как он лежит на сервере... Могу только влиять на него извне... |
Цитата:
Короче, вот код:
var target = document.querySelector('#worlds a'); // это и есть селектор в 3й строчке
var event = document.createEvent('MouseEvents');
event.initMouseEvent('click', true, true, window, 1, 0, 0, 0, 0, false, false, false, false, 1, null);
target.dispatchEvent(event); // это и есть 12я строка, вместо 7-17й
Мда.. |
А вобще, нужно изучать проблемную страницу и искать проблему.
В этом может помочь Chrome Developer Tools. На вкладке Sources есть справа Event Listener Breakpoints, нужно поставить галку напротив Mouse -> click |
danik.js,
ООООгромное Вам спасибо!!! Каким то чудом (для меня) сработало! УРРРА! |
А вы бы не могли простым языком объяснить как это работает? Что такое
'#worlds a'... |
Это css-селектор.
|
Да я посмотрел через firebug, но он указывает на две ссылки... Почему же выбирается нужная?
Простыми словами поясните код, пожалуйста. |
*.querySelectorAll - выборка всех подходящих под селектор элементов
*.querySelector - выборка только первого элемента. |
| Часовой пояс GMT +3, время: 02:18. |