nwe*_*ome 29

非常基本的区别:a Worker只能从创建它的脚本访问,a SharedWorker可以由来自同一域的任何脚本访问.

  • 嗯,所以通过`window.open`在弹出窗口上的`SharedWorker`可以访问其他人,假设他们在同一个来源?如果他们在一个全新的标签上怎么办?我猜不是吗? (6认同)
  • @Tower"Same origin"与生成另一个页面的页面无关.它(大致)表示调用脚本的域名.请参阅[此图表](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Same_origin_policy_for_JavaScript#Definition_of_an_origin).因此,在`example.com`上的两个脚本甚至可以跨不同的选项卡访问相同的`SharedWorker`. (4认同)

Ray*_*nos 12

SharedWorker似乎比Worker更具功能.

其中的功能是:

  • 共享的全球范围.所有SharedWorker实例共享一个全局范围.

W3C规格:

WHATWG规格:


小智 8

对于任何考虑使用SharedWorker的人来说,Apple SharedWorker在2015年取消了对WebKit的支持.在他们目前的路线图中,没有重新实现的计划.目前正在为WebKit开发对服务工作者的支持,并提供类似的功能(请参阅此处进行比较).

您可以在此处关注WebKitServiceWorkers的开发(即Safari支持).

  • @JohnBalvinArias Apple/Safari 已经成为新的 Internet Explorer 一段时间了。:) (6认同)

Mrc*_*ief 7

共享工作者可以使用多个连接.它将消息发布到端口以允许各种脚本之间的通信.

另一方面,专用工作者只是绑定到其主连接,并且不能将消息发布到其他脚本(工作者).