2012-04-06 172 views
0

爲什麼對setTimeout的調用顯示警告框但不會調用window.open? 如果我刪除警報,它也不會執行window.open。setTimeout中的window.open不執行操作

// Pause first then open window 
    function pause_first (url) { 
     alert (url); 
     var external_window = window.open(url,'_blank'); 
     external_window.focus(); 
    } 

    var pause_ret = setTimeout(function() { pause_first(url); }, 1000); 
+0

瀏覽器不會打開彈出窗口,除非它是對用戶操作(例如「click」)的響應。 – Esailija 2012-04-06 17:51:15

+0

是否有其他方式來延遲window.open? – user823527 2012-04-07 21:50:19

+0

我與我正在製作的應用程序有同樣的問題。很高興知道瀏覽器阻止它,我不只是愚蠢的,哈哈。 – 2012-11-11 00:35:44

回答

1

很可能是因爲您的瀏覽器認爲它是非用戶觸發的彈出窗口,所以它會阻止它。

+0

因此,如果我在元素的onclick事件中調用的某個函數內調用setTimeout,瀏覽器認爲它不再是用戶操作?有沒有辦法讓瀏覽器認爲它是? – user823527 2012-04-06 18:16:21

+1

^說每個poppup垃圾郵件發送者有史以來...... – jondavidjohn 2013-07-16 16:30:06