是否可以通过JavaScript触发链接(或任何元素)的点击事件?

时间:2008-09-27 14:54:37

标签: javascript

我正在编写一些需要为链接触发click事件的JavaScript代码。在Internet Explorer中,我可以这样做

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

但这在Firefox中不起作用,我假设任何其他浏览器。在Firefox中,我已经完成了这个

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

我觉得这不是最好的方法。有没有更好的方法来触发click事件?无论元素类型或浏览器如何,最好能起作用。

6 个答案:

答案 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