gpt4 book ai didi

javascript - 如果页面在 javascript 执行期间关闭,会发生什么情况?

转载 作者:行者123 更新时间:2023-11-29 19:22:21 25 4
gpt4 key购买 nike

假设用户在 t1 时刻关闭了与当前页面对应的选项卡,此时脚本正在运行:

<script>

foo();

// t1 <----------

bar();

</script>

请问剩下的<script>运行?还是立即终止 Javascript 执行?

我可以想象如何给一秒 <script>在描述的下方,第二个脚本将永远不会运行。但也许第一个被视为一个单一的、不可中断的东西?

最佳答案

可能这可能因浏览器而异,但可能不会。共识(见下文)似乎是脚本似乎已完成,或者至少需要几秒钟才能完成;一旦完成(或者无论如何,在一段时间之后),浏览器就会关闭该选项卡。

您可以相当轻松地在现代浏览器上进行测试,方法是执行忙等待并查看在忙等待期间尝试关闭浏览器时发生的情况。

例如,考虑这个页面:

<!doctype html>
<html>
<head>
<meta charset="UTF-8">
<title>Example</title>
<style>
html, body {
margin: 0;
padding: 0;
}
</style>
<body>
<p>I'm here</p>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script>
var d = Date.now() + 10000;
while (Date.now() < d) {
}
</script>
</body>
</html>
  • Chrome:显示“我在这里”,如果您单击关闭选项卡按钮,它不会关闭几秒钟(似乎循环完成)。 (如果它从未完成,Chrome 很可能最终会告诉您脚本有问题。)

  • Firefox:不显示“我在这里”,但用户界面做同样的事情:在您请求关闭选项卡后几秒钟不关闭选项卡。

  • IE11:可能会或可能不会显示“我在这里”,点击“关闭标签”按钮的响应似乎比 Chrome 更快(但仍然在几秒钟后)。

在脚本启动之前点击似乎很容易,所以您必须在页面加载后稍等片刻,然后再点击关闭按钮。

关于javascript - 如果页面在 javascript 执行期间关闭,会发生什么情况?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32585823/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com