javascript - 浏览器窗口中的所有选项卡是否共享一个 JavaScript 线程?

标签 javascript browser

一般来说,浏览器中的 JavaScript 执行被视为单线程。这个单一线程是否适用于浏览器窗口中打开的所有选项卡?

换句话说,如果(不同的)JavaScript 代码在不同的选项卡中运行,那么它们都是使用单个线程执行的?

此外,当您打开同一浏览器的多个窗口并且每个窗口包含多个选项卡时会发生什么?

最后,上述问题的答案是否取决于浏览器 vendor/版本等?

最佳答案

无法以通用方式回答这个问题,因为这是特定于浏览器实现的。

几乎每个较旧的浏览器总是为每个选项卡使用一个线程,但更现代的浏览器/版本可能已经改变了这一点(例如,chrome 每个选项卡都有一个线程 - 实际上,它甚至每个选项卡都有一个完整的进程)选项卡)。 编辑:评论的更正

Actually chrome uses Process-per-site-instance. That means a single site opened in multiple tabs will still get rendered by the same process

如果您出于性能原因而询问它(有点像问“可以使用永恒的无限循环来阻止我网站中的所有内容,或者会传播到其他选项卡”),则更安全的假设是该线程是大家共享的。如果它在当前浏览器中,那么您就计划了它,如果不是,那么您将获得比计划更好的性能,这几乎不成问题。

为了让一些代码在自己的线程中运行,请在Web Workers处有一个循环,但它们还远未在每个“现代”浏览器中完全实现。

关于javascript - 浏览器窗口中的所有选项卡是否共享一个 JavaScript 线程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17169742/

相关文章:

javascript - 具有缩放效果的 jquery 事件(居中)幻灯片

java - 在 Java 中嵌入 Web 浏览器窗口

javascript - 在浏览器中将字节数组显示为 pdf 我尝试了堆栈溢出中的几个选项,但它对我不起作用

Android 锁屏通知无法双击打开浏览器

javascript - 数据局部性在 JavaScript 中重要吗?

session - 如何关闭失去客户端的 selenium RC 服务器上的浏览器

javascript - 如何确定 iOS 上 Safari 崩溃的原因?

JavaScript: boolean 对象可以用作回调函数吗?

javascript - 如何使用 JQuery 仅获取 'clip' CSS 属性中的一个参数?

javascript - 我可以使用 `request` npm 包进行同步调用吗?