Worker()

翻译不完整。 请帮助我们翻译这篇文章!

Worker() 构造函数创建一个 Worker 对象,该对象执行指定的URL脚本。这个脚本必须遵守 同源策略 。

如果 此URL有一个无效的语句,或者违反同源策略,一个 SECURITY_ERR 类型的DOMException被抛出。

Note: 浏览器厂商对于 data URI 是否同源存在分歧。尽管 Gecko 10.0 (Firefox 10.0 / Thunderbird 10.0 / SeaMonkey 2.7) 和之后的版本接受 data URIs,但在所有其他浏览器中并非如此。

语法

const myWorker = new Worker(aURL, options);

参数

  • 如果文档不允许启动worker,则会引发SecurityError
  • 如果脚本之一的MIME类型为 text/csvimage/*video/*,或 audio/*, 则会引发NetworkError。它应该始终是 text/javascript。
  • 如果aURL无法解析,则引发SyntaxError。
aURL
是一个DOMString 表示worker 将执行的脚本的URL。它必须遵守同源策略。
options 可选
包含可在创建对象实例时设置的选项属性的对象。可用属性如下:
  • type:用以指定 worker 类型的  DOMString 值. 该值可以是 classic 或 module. 如果未指定,将使用默认值 classic.
  • credentials:用以指定 worker 凭证的 DOMString 值.该值可以是 omitsame-origin,或 include.。如果未指定,或者 type 是 classic,将使用默认值 omit (不要求凭证)。
  • nameDedicatedWorkerGlobalScope 的情况下,用来表示 worker 的 scope 的一个 DOMString 值,主要用于调试目的。

返回值

创建的 worker。

异常

  • 当 document 不被允许启动 worker 的时候,将抛出一个 SecurityError 异常。例如:如果提供的 aURL 有语法错误,或者与同源策略相冲突(跨域访问)。
  • 如果 worker 的 MIME 类型不正确,将抛出一个 NetworkError 异常。worker 的 MIME 类型必须是 text/javascript 。
  • 如果 aURL 无法被解析(格式错误),将抛出一个 SyntaxError 异常。

例子

下面的代码片段展示了通过 Worker() 创建 Worker 对象的过程, 以及随后的使用方法:

let myWorker = new Worker("worker.js");

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

完整的例子请看 Basic dedicated worker example (run dedicated worker).

规范

Specification Status Comment
HTML Living Standard
Worker()
Living Standard No change from Unknown.
Unknown
Worker()
Unknown Initial definition.

浏览器兼容性

Update compatibility data on GitHub
DesktopMobile
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewChrome for AndroidFirefox for AndroidOpera for AndroidSafari on iOSSamsung Internet
Worker() constructorChrome Full support 4Edge Full support 12Firefox Full support 3.5IE Full support 10Opera Full support 10.6Safari Full support 4WebView Android Full support 4Chrome Android Full support 18Firefox Android Full support 4Opera Android Full support 11Safari iOS Full support 5.1Samsung Internet Android Full support 1.0
Support for ECMAScript modulesChrome Full support 80Edge Full support 80Firefox No support NoIE No support NoOpera Full support 67Safari No support NoWebView Android Full support 80Chrome Android Full support 80Firefox Android No support NoOpera Android Full support 57Safari iOS No support NoSamsung Internet Android Full support 13.0
Strict MIME type checks for worker scriptsChrome ? Edge ? Firefox Full support 81IE No support NoOpera ? Safari ? WebView Android ? Chrome Android ? Firefox Android Full support 81Opera Android ? Safari iOS ? Samsung Internet Android ?
Constructor name optionChrome Full support 70Edge Full support 18Firefox Full support 55IE No support NoOpera Full support 57Safari No support No
Notes
No support No
Notes
Notes Supported in Safari Technology Preview 64
WebView Android No support NoChrome Android Full support 70Firefox Android Full support 55Opera Android Full support 49Safari iOS No support No
Notes
No support No
Notes
Notes Supported in Safari Technology Preview 64
Samsung Internet Android Full support 10.0
Constructor type optionChrome Full support 80Edge Full support 80Firefox No support NoIE No support NoOpera Full support 67Safari No support NoWebView Android Full support 80Chrome Android Full support 80Firefox Android No support NoOpera Android Full support 57Safari iOS No support NoSamsung Internet Android Full support 13.0

Legend

Full support  
Full support
No support  
No support
Compatibility unknown  
Compatibility unknown
See implementation notes.
See implementation notes.

Note: 浏览器可以被标记为对Worker()的完全支持尽管他并不支持一个以modules类型编写的脚本。截至2019年8月1日,暂无浏览器支持以模块类型编写的脚本。如果没有这种支持,moduleds类型的脚本必须使用编译器翻译成无module代码才能在浏览器上运行。

另请参阅