--- title: Worker slug: Web/API/Worker tags: - DOM - Worker translation_of: Web/API/Worker ---
{{APIRef("Web Workers API")}}
Worker 接口是 Web Workers API 的一部分,指的是一种可由脚本创建的后台任务,任务执行中可以向其创建者收发信息。要创建一个 Worker ,只须调用 Worker(URL)
构造函数,函数参数 `URL` 为指定的脚本。
Worker 也可以创建新的 Worker,当然,所有 Worker 必须与其创建者同源(注意:Blink暂时不支持嵌套 Worker)。
需要注意的是,不是所有函数和构造函数(或者说…类)都可以在 Worker 中使用。具体参考页面 Worker 所支持的函数和类。Worker 可以使用 XMLHttpRequest
发送请求,但是请求的 responseXML
与 channel
两个属性值始终返回 null
(fetch
仍可正常使用,没有类似的限制)。
如果你要在火狐浏览器的扩展使用 Worker 访问 js-ctypes,应使用 {{ domxref("ChromeWorker") }} 对象来替代。(译者注:这里没有看懂,希望有人能驳正,或添加说明)
继承父对象{{domxref("EventTarget")}} 的属性,以及实现对象 {{domxref("AbstractWorker")}}的属性。
继承父对象{{domxref("EventTarget")}} 的方法,以及实现对象 {{domxref("AbstractWorker")}}的方法。
下面的代码通过构造函数 {{domxref("Worker.Worker", "Worker()")}} 创建了一个 {{domxref("Worker")}} 对象。
var myWorker = new Worker('worker.js'); var first = document.querySelector('#number1'); var second = document.querySelector('#number2'); first.onchange = function() { myWorker.postMessage([first.value,second.value]); console.log('Message posted to worker'); }
完整的示例,请查阅 Basic dedicated worker example (run dedicated worker).
规范 | 状态 | 说明 |
---|---|---|
{{SpecName('HTML WHATWG', "#worker", "Worker")}} | {{Spec2('HTML WHATWG')}} |
不同类型的worker兼容度不一致,详细参考具体定义的页面。
{{Compat("api.Worker")}}
浏览器的早期版本中,加载跨域的执行者脚本导致 SecurityError
事件。根据规范的变更,而新版本的浏览器只有{{event("error")}}事件发生