Firefox中的javascript链接中的window.setTimeout无法正常工作

问题描述:

由于通用原因,我必须在某些导航栏链接的HREF属性中添加一些JavaScript以执行一些更多操作。部分操作需要延迟执行,因此我使用的是window.setTimeoutFirefox中的javascript链接中的window.setTimeout无法正常工作

这里有一个例子:

<a href="javascript:alert('do anything');window.setTimeout(function(){alert('do anything else');},1111);">Login</a> 

在谷歌浏览器这就像预期,但在Firefox浏览器重定向到包含只有当window.setTimeout称为随机数的新的空白页面。

前瞻:http://jsbin.com/rekosahute

为什么发生这种情况,我该如何避免这种情况,仍然使用这种行动HREF属性?特别是返回的数字对我来说很神奇。

+1

当您要访问的窗口对象功能,你不需要写'window',他们总是入店 –

在一个匿名函数进行包装,似乎解决它:

<a href="javascript:(function(){alert('do anything');window.setTimeout(function(){alert('do anything else');},1111);})()">Login</a> 

即返回和FF在页面上显示的数字,是window.setTimeout的返回值,这是一个计数器递增每次它被称为,让你跟踪定时器。

+0

欢迎的*感谢你,这个工程。你选择了正确的问题,值得代表。 :) – modiX

这是正确的方式...

<a href="javascript: alert('do anything'); 
    window.setTimeout(
     function() { 
     alert('do anything else'); 
     }, 1111 
    ); 
    void 0"> 
Login 
</a>