2012-04-06 168 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