我可以触发点击事件onload

问题描述:

我在我的页面中有锚标签。我喜欢触发点击事件onload。这意味着我想用新标签打开这个页面“http://XXXXX.com”。因为我不想弹出拦截器。无论如何要做到这一点?我可以触发点击事件onload

锚ATTRS给出波纹管

id="add_redirect" 
href="http://XXXXX.com" 
target="_blank" 
+3

请不要尝试绕过弹出窗口阻止程序。 – BoltClock 2011-02-11 08:20:20

如果你的目标是绕过页面加载弹出窗口拦截器,触发click事件综合可能不会工作。浏览器足够智能,可以知道何时click是用户生成的,何时您调用了DOM元素上的click函数(在那些浏览器上甚至可以运行)。例如:http://jsbin.com/avibi3/3http://jsbin.com/avibi3/4

使用jQuery的trigger机制肯定不会做,因为它并没有真正触发click事件在所有;它只是触发jQuery的那迷上了处理程序(编辑:和,显然,通过onclick属性  —看到Sukhi的回答  —而不是那些通过addEventListener连接定义的)。如果这就是你想要做的,Sukhi的答案告诉你如何,虽然我总是说:如果你想让代码从两个不同的地方运行,把它放在一个函数中,并从两个不同的地方调用该函数(而不是把它在click处理程序中,然后模拟点击来运行代码)。 trigger(主要涉及与第三方脚本的集成有关)有效的使用案例,但是为了在两个不同的地方运行您自己的自己的代码,这是一个设计问题的症状。

尝试添加下面的代码在页面加载

document.getElementById('add_redirect').click(); 
+0

对不起。这是所有Javascript – 2011-02-11 08:42:00

使用jQuery你可以做到这一点easily.well ...早些时候发布的解决方案还努力。

$(document).ready(function(){ 
$("#add_redirect").trigger('click'); 
}); 

TRY DEMO

+0

请注意,只会触发`click`处理程序**如果**处理程序与jQuery挂钩。这很好,如果你使用jQuery,你想用它来连接事件处理程序,但是例如标记中的'onclick = ...'不会被激活。这值得大声呼喊。 – 2011-02-11 08:21:10

+1

有趣,我的错误泛化。它不会做的是通过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,这是可以忽略的...