Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Не получается программно нажать ссылку (https://javascript.ru/forum/events/35820-ne-poluchaetsya-programmno-nazhat-ssylku.html)

Deff 23.02.2013 12:57

ArtemKrass,
А мой пример у Вас не работает при "Посмотреть"
И браузер не указали

ArtemKrass 23.02.2013 13:05

Я пишу на C#, сейчас в нем же понадобилось использовать немного JavaScript. До этого с JavaScript практически не сталкивался. Пожалуйста помогите на моем примере... Заглянул по ссылке о dispatchEvent... Темный лес...

ArtemKrass 23.02.2013 13:08

Цитата:

Сообщение от Deff (Сообщение 236583)
ArtemKrass,
А мой пример у Вас не работает при "Посмотреть"
И браузер не указали

Я же писал... Пишу на C# с использованием awesomium (движок Chrome вроде-бы).

Deff 23.02.2013 13:10

Цитата:

Сообщение от ArtemKrass
Я же писал...

Я уже Чуть поменял код
У меня работает в Chrome - ось ХP
(Там в примере переход на текущий форум http://javascript.ru/forum/ (в окошке

danik.js 23.02.2013 13:54

Цитата:

Сообщение от ArtemKrass
движок Chrome вроде-бы

Он называется WebKit

Цитата:

Сообщение от ArtemKrass
Темный лес

Вот простой пример:
<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

ArtemKrass 23.02.2013 16:14

Не могу разобраться... Как это можно применить к моему коду?

danik.js 23.02.2013 16:49

Изменить селектор в 3й строчке и вместо 7-17 строчек оставить только 12ю

ArtemKrass 23.02.2013 17:02

Мы видимо о разных вещах разговариваем...

Я пишу небольшой бот для авторизации на сайте (на C#).

Чтобы заполнять данные и нажимать кнопки мне нужен JavaScript.
Программно заполнять логин и пароль у меня получилось, нажимать на кнопки тоже... А вот перейти по этой злополучной ссылке никак.

Соответственно код HTML поменять не могу, так как он лежит на сервере... Могу только влиять на него извне...

danik.js 23.02.2013 17:16

Цитата:

Сообщение от ArtemKrass
Мы видимо о разных вещах разговариваем...

Да нет, это вы не поняли.

Короче, вот код:
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й


Мда..

danik.js 23.02.2013 17:19

А вобще, нужно изучать проблемную страницу и искать проблему.
В этом может помочь Chrome Developer Tools. На вкладке Sources есть справа Event Listener Breakpoints, нужно поставить галку напротив Mouse -> click


Часовой пояс GMT +3, время: 22:29.