<Permission denied> 尝试实例化网络工作者对象时出错
<Permission denied> error trying to instantiate web worker object
第一次尝试 web worker API,似乎无法从后台 worker 那里得到响应。
标记:
<script src="~/Scripts/script.js"></script>
<button onclick="TriggerWorker()">Trigger Worker</button>
script.js 文件的内容:
function TriggerWorker() {
var myWorker = new Worker('worker.js');
myWorker.onmessage = function (e) {
console.log(e.data);
}
console.log(myWorker);
myWorker.postMessage("Text sent to worker");
}
worker.js 文件的内容:
onmessage = function (e) {
postMessage('OK');
}
我可以让 myWorker 对象写入控制台,但响应 "OK" 永远不会返回控制台。检查 myWorker 对象时,我可以看到 onmessage 属性 设置为 "Permission denied".
包含 worker onmessage 声明的文件的路径是相对于 html 文件的 - 而不是调用脚本文件。
我通过进行以下编辑使其正常工作:
var myWorker = new Worker('../Scripts/worker.js');
onmessage 事件与当前 window 有关。所以在script.js中应该是
self.onmessage = 函数 (e)
而不是
myWorker.onmessage = function (e)
postMessage 方法属于目标 window。所以在worker.js中应该是
onmessage = 函数 (e) {
e.source.postMessage('OK'); }
而不是
onmessage = function (e) {
postMessage('OK'); }
第一次尝试 web worker API,似乎无法从后台 worker 那里得到响应。
标记:
<script src="~/Scripts/script.js"></script>
<button onclick="TriggerWorker()">Trigger Worker</button>
script.js 文件的内容:
function TriggerWorker() {
var myWorker = new Worker('worker.js');
myWorker.onmessage = function (e) {
console.log(e.data);
}
console.log(myWorker);
myWorker.postMessage("Text sent to worker");
}
worker.js 文件的内容:
onmessage = function (e) {
postMessage('OK');
}
我可以让 myWorker 对象写入控制台,但响应 "OK" 永远不会返回控制台。检查 myWorker 对象时,我可以看到 onmessage 属性 设置为 "Permission denied".
包含 worker onmessage 声明的文件的路径是相对于 html 文件的 - 而不是调用脚本文件。
我通过进行以下编辑使其正常工作:
var myWorker = new Worker('../Scripts/worker.js');
onmessage 事件与当前 window 有关。所以在script.js中应该是
self.onmessage = 函数 (e)
而不是
myWorker.onmessage = function (e)
postMessage 方法属于目标 window。所以在worker.js中应该是
onmessage = 函数 (e) { e.source.postMessage('OK'); }
而不是
onmessage = function (e) {
postMessage('OK'); }