我想知道,当我在其他标签页或窗口中打开网页时,setTimeout,setInterval以及在加载DOM时触发的其他函数会发生什么。一旦我真正看到网页,它们会触发吗,或者即使在后台加载DOM也会触发它们?这在不同的浏览器上有所不同吗?
答案 0 :(得分:1)
至少在Chrome和Opera中,即使页面在后台加载,也会执行回调 。
考虑以下HTML
<a href="javascript:openWindow()">Click me!</a>
和相应的JavaScript
function openWindow()
{
var article = open('');
focus();
article.setTimeout(function(){ article.alert("Hello"); }, 3000);
}
(见this fiddle)。
如果您点击按下Ctrl键的链接,Chrome会打开一个新的背景标签。 3秒后仍显示alert
。在Opera中也可以观察到相同的情况。我也尝试过Edge,但它不会在后台标签中打开页面,因此我无法判断JS是否仍然会被执行。