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

时间:2020-03-06 14:49:30  来源:igfitidea点击:

我正在编写一些JavaScript代码,这些代码需要触发链接的click事件。在Internet Explorer中,我可以执行此操作

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

但这在Firefox中不起作用,并且我假定使用其他任何浏览器。在Firefox中,我已完成此操作

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

我觉得这不是最好的方法。有没有更好的方法来触发click事件?最好是不管元素或者浏览器类型如何都可以工作的东西。

解决方案

通常这是不可能的,afaik,mozilla具有click()方法,但仅适用于输入元素,而不适用于链接。

为什么不只创建一个将在onClick处理程序上调用该按钮的函数,而每当我们要"单击"该按钮时,就调用该函数呢?

Mozilla对允许的JS动作/事件有更严格的政策,我对click()事件也有类似的问题。在某些元素上禁用了此功能,以防止XSS。

重定向浏览器有什么问题?这项艰辛的工作随处可见。

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)
   }
}

我不建议这样做,但是我们可以将HTML元素的onclick属性称为方法。

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

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

嘿,我并不是要挖掘旧的线程,但我也在寻找这个问题的答案,并且找到了jQuery 1.3x的新功能(我在Ajax加载内容方面遇到了问题)

这是我的实现方式:

的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

我拼命地寻找一个安静的地方,最简单的一个似乎正在工作!

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

它适用于chrome 7.0.5和8.0.6