我的JavaScript中有一个计时器,需要模拟点击一个链接,一旦时间流逝就转到另一个页面.要做到这一点,我正在使用jQuery的click()
功能.我已经使用$().trigger()
和window.location
也,我可以作出打算与所有三个它的工作.
我观察到一些奇怪的行为,click()
我试图了解发生了什么以及为什么.
我正在使用Firefox来解决这个问题,但我也对其他浏览器会对此做些什么感兴趣.
如果我没有使用$('a').bind('click',fn)
或$('a').click(fn)
设置事件处理程序,那么调用$('a').click()
似乎什么都不做.它不会为此事件调用浏览器的默认处理程序,因为浏览器不会加载新页面.
但是,如果我首先设置一个事件处理程序,那么即使事件处理程序什么都不做,它也会按预期工作.
$('a').click(function(){return true;}).click();
Run Code Online (Sandbox Code Playgroud)
这会加载新页面,就像我自己点击了一样.
所以我的问题是双重的:这种奇怪的行为是因为我在某处做错了吗?click()
如果我没有创建自己的处理程序,为什么调用对默认行为不起作用?
编辑:
当霍夫曼确定他试图复制我的结果时,我上面描述的结果实际上并没有发生.我不确定是什么原因引起了我昨天观察到的事件,但我今天肯定这不是我在问题中所描述的.
所以答案是你不能在浏览器中"伪造"点击并且所有jQuery都会调用你的事件处理程序.您仍然可以使用window.location
更改页面,这对我来说很好.