SharedWorker()

SharedWorker() 构造函数实例化的 SharedWorker 对象可以执行指定的 URL 的脚本。所执行的脚本必须遵守 同源策略

如果 URL 的语法无效或者违反了同源策略会抛出 SECURITY_ERR 类型的 DOMException 异常。

注意: 浏览器开发者对于 data URI 是否同源产生分歧。尽管 Gecko 10.0 (Firefox 10.0 / Thunderbird 10.0 / SeaMonkey 2.7) 及之后版本支持 data URIs,其他浏览器并不能支持 。

语法

var myWorker = new SharedWorker(aURL, name);
var myWorker = new SharedWorker(aURL, options);

参数

URL参数
一个代表了 worker 将执行的脚本 URL 的 DOMString,它必须遵守同源策略。
name 可选
一个指定表示 worker 范围的SharedWorkerGlobalScope (en-US)的标识名称的 DOMString,主要用于调试。
options 可选
创建实例时设定的包含了可选属性的对象。可用的属性包括:
  • type: 一个制定所创建 worker 类型的 DOMString。可设定的值为 classic 或者 module. 若不指定,默认值为 classic.
  • credentials: 一个指定要用于工作程序的凭据类型的  DOMString。 可设定的值为 omitsame-origin 或 include. 若不指定,或者 type 设定为 classic, 默认值为 omit (无需凭据)。
  • name: 一个指定表示 worker 范围的SharedWorkerGlobalScope (en-US)的标识名称的 DOMString,主要用于调试。

Return value

创建的 worker

Exceptions

  • SecurityError 当文档不能正常启动 workers 时抛出
  • NetworkError 如果其中一个脚本的MIME类型是text / csv,image / *,video / *或audio / * 时抛出。类型只应该为 text/javascript
  • SyntaxError 当 URL 不能被解析时抛出

示例

以下代码段显示了使用 SharedWorker() 构造函数创建 SharedWorker 对象以及对象的后续用法:

var myWorker = new SharedWorker('worker.js');

myWorker.port.start();

first.onchange = function() {
  myWorker.port.postMessage([first.value,second.value]);
  console.log('Message posted to worker');
}

second.onchange = function() {
  myWorker.port.postMessage([first.value,second.value]);
  console.log('Message posted to worker');
}

myWorker.port.onmessage = function(e) {
  result1.textContent = e.data;
  console.log('Message received from worker');
}

看完整示例,请见 Basic shared worker example (run shared worker.)

规范

Specification Status Comment
HTML Living Standard
SharedWorker()
Living Standard  

浏览器兼容性

BCD tables only load in the browser

See also