SharedWorker()

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

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

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

语法

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

参数

URL 参数

一个代表了 worker 将执行的脚本 URL 的 DOMString,它必须遵守同源策略。

name 可选

一个指定表示 worker 范围的SharedWorkerGlobalScope的标识名称的 DOMString,主要用于调试。

options 可选

创建实例时设定的包含了可选属性的对象。可用的属性包括:

  • type: 一个制定所创建 worker 类型的 DOMString。可设定的值为 classic 或者 module. 若不指定,默认值为 classic.
  • credentials: 一个指定要用于工作程序的凭据类型的 DOMString。可设定的值为* omit、*same-origin 或 *include. *若不指定,或者 type 设定为 classic, 默认值为 omit (无需凭据)。
  • *name: *一个指定表示 worker 范围的SharedWorkerGlobalScope的标识名称的 DOMString,主要用于调试。

Return value

创建的 worker

Exceptions

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

示例

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

js
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");
};

有关更完整的示例,详见基本的共享型 worker 示例运行基本的共享型 worker)。

规范

Specification
HTML Standard
# dom-sharedworker-dev

浏览器兼容性

BCD tables only load in the browser

See also