Возможно ли инициировать событие 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
? Предпочтительно то, что работает независимо от типа элемента или браузера.
Ответы
Ответ 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