无法在 Firefox 35 插件中创建内联 Web Worker
Cannot create inline Web Worker in Firefox 35 addon
我正在开发一个基于XUL的Firefox扩展。我正在尝试使用 BLOB 创建一个内联 Web Worker 。该代码曾经在Firefox 33中工作,但是在更新到Firefox 35后,我收到一个错误。下面是一个代码示例:
try {
var blob = new Blob(["function f(){}"], {type: "application/javascript"});
var url = window.URL.createObjectURL(blob); //blob:null/371e34bd-1fbf-4f66-89cc-24d0c1c7bad5
return new Worker(url);
} catch(e) {
console.error(e);
}
我收到以下错误:
Failed to load script (nsresult = 0x805303f4)
我知道当 Web Worker 尝试从其他域加载脚本时会出现此错误,但我无法弄清楚为什么在我的情况下会发生这种情况。我从createObjectURL()函数获得的网址似乎无效。它包含"空/"前缀。
有人解释发生了什么吗?这里可能的解决方案是什么?
这个例子对我有用,从 Firefox 37 到 39.0a2 进行了测试。
// URL.createObjectURL
window.URL = window.URL || window.webkitURL;
// "Server response", used in all examples
var response = "self.onmessage=function(e){postMessage('Worker: '+e.data);}";
var blob;
try {
blob = new Blob([response], {type: 'application/javascript'});
} catch (e) { // Backwards-compatibility
window.BlobBuilder = window.BlobBuilder || window.WebKitBlobBuilder || window.MozBlobBuilder;
blob = new BlobBuilder();
blob.append(response);
blob = blob.getBlob();
}
var worker = new Worker(URL.createObjectURL(blob));
// Test, used in all examples:
worker.onmessage = function(e) {
alert('Response: ' + e.data);
};
worker.postMessage('Test');
相关文章:
- 使用Web Html表单创建Javascript数组
- 创建web服务“;活动指示器”-与所有浏览器兼容的类似指示符
- 如何在asp.net中获取动态创建的文本框web控件的值
- 如何创建可从多个应用程序使用的PHP登录web服务
- 如何创建基于 Web 服务的计时器
- 在Firefox中创建Web Audio API的MediaElementSource方法
- 如何使用 import.io 中的数据创建 Web 应用
- 使用嵌入式码头创建 Web 界面
- 如何在 javascript 函数中创建 Web 链接并将单元格值作为参数传递给 servlet
- 创建 Web 服务器控件以模拟 jquery 自动完成 API
- 如何从字符串创建 Web 工作线程
- 在 html5 中创建 Web worker 时使用 setTimeout()
- 如何使用flatiron节点框架创建web应用程序骨架
- 仅使用Javascript创建web应用程序
- 哪一个更适合创建web应用程序?Web2py或cherry
- 创建web工作者,一次只处理几个文件- javascript
- 我可以在没有互联网的智能手机上创建Web应用程序吗?如何去做
- 用javascript创建Web Sql表
- IoT/WinJS/VS -创建web诊断对象失败
- 在Ajax回调中创建Web Workers