我的 JavaScript 中有一个计时器,它需要模拟单击一个链接,以便在时间过去后转到另一个页面。为此,我使用 jQuery 的 click()
函数。我已经使用了 $().trigger()
和 window.location
也,我可以使它的工作与所有三个打算。
我观察到 click()
有一些奇怪的行为,我想弄明白发生了什么,为什么会这样。
我在这个问题中描述的所有内容都使用 Firefox,但我也对其他浏览器将如何处理这些内容感兴趣。
如果我没有使用 $('a').bind('click',fn)
或 $('a').click(fn)
来设置事件处理程序,那么调用 $('a').click()
似乎什么也不做。它不调用此事件的浏览器默认处理程序,因为浏览器不加载新页。
但是,如果我首先设置一个事件处理程序,那么即使事件处理程序什么也不做,它也会按预期的方式工作。
$('a').click(function(){return true;}).click();
这会加载新页面,就像我亲自点击了 a 一样。
所以我的问题是双重的: 这种奇怪的行为是因为我在某个地方做错了什么吗?如果我没有创建自己的处理程序,那么为什么调用 click()
对默认行为没有任何作用呢?
正如霍夫曼在试图复制我的结果时所确定的那样,我上面描述的结果实际上并没有发生。我不确定是什么导致了我昨天观察到的事件,但是我今天确定这不是我在问题中所描述的。
所以答案是你不能在浏览器中“假”点击,而 jQuery 所做的只是调用事件处理程序。您仍然可以使用 window.location
来更改页面,这对我来说很好。