我正在编写一些需要为链接触发click
事件的JavaScript代码。在Internet Explorer中,我可以这样做
var button = document.getElementById('myButton');
button.click();
但这在Firefox中不起作用,我假设任何其他浏览器。在Firefox中,我已经完成了这个
var button = document.getElementById('myButton');
window.location = button.href;
我觉得这不是最好的方法。有没有更好的方法来触发click
事件?无论元素类型或浏览器如何,最好能起作用。
答案 0 :(得分:73)
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)
}
}
答案 1 :(得分:2)
我不推荐它,但你可以调用HTML元素的onclick属性作为方法。
<a id="my-link" href="#" onclick="alert('Hello world');">My link</a>
document.getElementById('my-link').onclick();
答案 2 :(得分:1)
通常不可能,afaik,mozilla有click()方法,但仅限输入元素,而不是链接。
为什么不创建按钮将在onClick处理程序上调用的函数,并且每当您想要“单击”按钮时调用该函数?
答案 3 :(得分:0)
Mozilla对允许的JS操作/事件有更严格的策略 - 我也遇到了与click()事件类似的问题。它在某些元素上被禁用以防止XSS。
重定向浏览器有什么问题?这无处不在。
答案 4 :(得分:-1)
嘿,我不是故意挖掘一个旧线程 - 但我也在寻找这个问题的答案,并找到了一个jQuery 1.3x的新功能(我遇到了Ajax Loaded内容的问题)
以下是我实施它的方式:
HTML
<a class="navlink" href="mypage.html">Online Estimate</a>
LOADED SCRIPT
$(".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
答案 5 :(得分:-1)
我正拼命地寻找这一个,最简单的似乎工作!
document.getElementById('foo').onclick();
它适用于chrome 7.0.5和8.0.6