是否可以通过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