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

时间:2016-07-31 17:27:27

标签: javascript html firefox hyperlink

由于一般原因,我必须将一些javascript放入某些导航栏链接的HREF属性中以执行更多操作。部分操作需要延迟执行,因此我使用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属性进行此类操作?特别是返回的号码对我来说很神奇。

2 个答案:

答案 0 :(得分:1)

将它包装在匿名函数中似乎解决了这个问题:

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

返回并在FF页面上显示的数字是window.setTimeout的返回值,它是每次调用时递增的计数器,以便您跟踪计时器。

答案 1 :(得分:1)

这是正确的方法......

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