我可以触发点击事件onload
我在我的页面中有锚标签。我喜欢触发点击事件onload。这意味着我想用新标签打开这个页面“http://XXXXX.com”。因为我不想弹出拦截器。无论如何要做到这一点?我可以触发点击事件onload
锚ATTRS给出波纹管
id="add_redirect"
href="http://XXXXX.com"
target="_blank"
如果你的目标是绕过页面加载弹出窗口拦截器,触发click
事件综合可能不会工作。浏览器足够智能,可以知道何时click
是用户生成的,何时您调用了DOM元素上的click
函数(在那些浏览器上甚至可以运行)。例如:http://jsbin.com/avibi3/3,http://jsbin.com/avibi3/4
使用jQuery的trigger
机制肯定不会做,因为它并没有真正触发click
事件在所有;它只是触发jQuery的那迷上了处理程序(编辑:和,显然,通过onclick
属性 —看到Sukhi的回答 —而不是那些通过addEventListener
连接定义的)。如果这就是你想要做的,Sukhi的答案告诉你如何,虽然我总是说:如果你想让代码从两个不同的地方运行,把它放在一个函数中,并从两个不同的地方调用该函数(而不是把它在click
处理程序中,然后模拟点击来运行代码)。 trigger
(主要涉及与第三方脚本的集成有关)有效的使用案例,但是为了在两个不同的地方运行您自己的自己的代码,这是一个设计问题的症状。
尝试添加下面的代码在页面加载
document.getElementById('add_redirect').click();
对不起。这是所有Javascript – 2011-02-11 08:42:00
使用jQuery你可以做到这一点easily.well ...早些时候发布的解决方案还努力。
$(document).ready(function(){
$("#add_redirect").trigger('click');
});
请注意,只会触发`click`处理程序**如果**处理程序与jQuery挂钩。这很好,如果你使用jQuery,你想用它来连接事件处理程序,但是例如标记中的'onclick = ...'不会被激活。这值得大声呼喊。 – 2011-02-11 08:21:10
有趣,我的错误泛化。它不会做的是通过DOM2方法(`addEventListener`)附加的fire处理程序:http://jsbin.com/avibi3我错误地认为它也不会触发`onclick =“.. “``从标记,但显然它确实。无论如何,DOM2的事情是一个重要的警告。 Chrome的弹出窗口拦截器在任何情况下都不会被愚弄:http://jsbin.com/avibi3/3,http://jsbin.com/avibi3/4 – 2011-02-11 08:31:31
是的,你可以使用点击事件的onLoad ...只是使用的setTimeout()jQuery的方法,将调用单击功能,无需点击那个...这里是例子
$("document").ready(function() {
setTimeout(function() {
$("#add_redirect").trigger('click');
},10);
这会为你网页的时候工作负载和时间延迟是10ms,这是可以忽略的...
请不要尝试绕过弹出窗口阻止程序。 – BoltClock 2011-02-11 08:20:20