Можно ли вызвать событие щелчка ссылки (или любого элемента) через JavaScript? - PullRequest
46 голосов
/ 27 сентября 2008

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

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

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

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

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

Ответы [ 6 ]

73 голосов
/ 27 сентября 2008

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 голосов
/ 28 сентября 2008

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

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

document.getElementById('my-link').onclick();
1 голос
/ 27 сентября 2008

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

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

0 голосов
/ 29 августа 2010

Я отчаянно искал этот тихий, а самый простой, казалось, работал!

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

он работал в Chrome 7.0.5 и т. Е. 8.0.6

0 голосов
/ 17 сентября 2009

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

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

HTML

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

ПОГРУЖЕННЫЙ СКРИПТ

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

ЗАГРУЗЕННЫЙ HTML

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

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

0 голосов
/ 27 сентября 2008

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...