Подтвердить что ты не робот

Возможно ли инициировать событие click (или любого элемента) клика через JavaScript?

Я пишу код JavaScript, который должен запускать событие click для ссылки. В Internet Explorer я могу это сделать

var button = document.getElementById('myButton');
button.click();

Но это не работает в Firefox, и я предполагаю, что любой другой браузер. В Firefox я сделал это

var button = document.getElementById('myButton');
window.location = button.href;

Я чувствую, что это не лучший способ сделать это. Есть ли лучший способ вызвать событие click? Предпочтительно то, что работает независимо от типа элемента или браузера.

4b9b3361

Ответ 1

http://jehiah.cz/archive/firing-javascript-events-properly

function fireEvent(element,event) {
   if (document.createEvent) {
       // dispatch for firefox + others
       var evt = document.createEvent("HTMLEvents");
       evt.initEvent(event, true, true ); // event type,bubbling,cancelable
       return !element.dispatchEvent(evt);
   } else {
       // dispatch for IE
       var evt = document.createEventObject();
       return element.fireEvent('on'+event,evt)
   }
}

Ответ 2

Я бы не рекомендовал его, но вы можете вызывать атрибут onclick элемента HTML как метод.

<a id="my-link" href="#" onclick="alert('Hello world');">My link</a>

document.getElementById('my-link').onclick();

Ответ 3

Как правило, afaik, mozilla имеет click(), но только для входных элементов, а не для ссылок.

Почему бы вам просто не создать функцию, которую кнопка вызывается обработчиком onClick, и когда вы хотите 'click' вместо этого вызывать функцию вместо?

Ответ 4

Mozilla имеет более строгую политику для разрешенных действий/событий JS - у меня были аналогичные проблемы с событием click(). Он отключен для некоторых элементов, чтобы предотвратить XSS.

Что не так с перенаправлением браузера? Это будет работать везде.

Ответ 5

Эй, я не хочу выкапывать старый поток, но я искал ответ на эту же проблему, а также нашел новую функцию для jQuery 1.3x (у меня была проблема с Ajax Loaded content )

Вот как я его реализовал:

HTML

<a class="navlink" href="mypage.html">Online Estimate</a>

LOADED SCRIPT

$(".pagelink").click(function(){
    $(".navlink[href="+$(this).attr("href")+"]").trigger('click');
    return false;
});

LOADED HTML

<a class="pagelink" href="mypage.html">Online Estimate</a>

Функция - это "Событие триггера"...
Подробнее об этом здесь: http://docs.jquery.com/Events/trigger#eventdata

Ответ 6

Я искал этот тихий отчаянно, и простейший из них, похоже, работает!

document.getElementById('foo').onclick();

он работал в chrome 7.0.5 и ie 8.0.6