Javascript:在 window.open() 中使用 setTimeout 后,将 setTimeout 与 window.close() 一起使用不起作用

use*_*873 5 javascript settimeout

我有两个 setTimeout 一个接一个。一个在窗口中打开网页,另一个在预定时间后关闭窗口。但是,使用setTimeout打开网页后,下一次关闭窗口的setTimeout不起作用。带有 windows.close 的 setTimeout 本身工作正常。

我并试图打开一个带有消息的窗口;然后在预定的时间后在窗口中打开一个网站,然后在几秒钟后关闭窗口。这是我执行此操作的功能:

function showNews() {
    news = window.open("", "NewsWindow", "width=900, height=700");
    news.document.write("<p>The 'NewsWindow' will only appearing for 3 seconds.</p>");
    tmot = setTimeout(function(){news.window.open('http://www.yahoo.com','_self')}, 2000);
    tmot = setTimeout(function(){news.window.close()}, 5000);
}
Run Code Online (Sandbox Code Playgroud)

我尝试在 Chrome 和 IE 上运行,两个浏览器都只会执行 setTimeout 之一,而不会执行另一个。任何建议和帮助将不胜感激!

use*_*496 0

我在 Chrome 上的 JSFiddle 中对此进行了测试。

事实上,超时就是触发。问题是某些浏览器不允许您使用 javascript 关闭窗口。存在阻止它的错误 - 特别是浏览器不会让一个网站的代码关闭向另一网站打开的窗口。请参阅下面的评论以获得更好的解释。

当我在 Chrome 中尝试此操作时, setTimeout 方法被触发,但窗口没有关闭。我通过调用“alert”方法而不是 news.window.close() 方法来测试它。