2016-07-31 85 views
0

由於通用原因,我必須在某些導航欄鏈接的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',他們總是入店 –

回答

1

在一個匿名函數進行包裝,似乎解決它:

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

即返回和FF在頁面上顯示的數字,是window.setTimeout的返回值,這是一個計數器遞增每次它被稱爲,讓你跟蹤定時器。

+0

歡迎的StackOverflow感謝你,這個工程。你選擇了正確的問題,值得代表。 :) – modiX

1

這是正確的方式...

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