Javascript ReferenceError:未在简单Firefox扩展中定义工作程序
我正在创建一个非常简单的Firefox扩展。我使用了Javascript ReferenceError:未在简单Firefox扩展中定义工作程序,javascript,firefox,firefox-addon,firefox-addon-sdk,web-worker,Javascript,Firefox,Firefox Addon,Firefox Addon Sdk,Web Worker,我正在创建一个非常简单的Firefox扩展。我使用了cfx init来创建目录结构,并在lib/main.js和data/my_worker.js main.js如下: var worker = new Worker("my_worker.js"); worker.onmessage = function(e) { console.log(e.data); }; worker.postMessage("Bobby"); 和my_worker.js如下所示: self.onmessa
cfx init
来创建目录结构,并在lib/main.js
和data/my_worker.js
main.js
如下:
var worker = new Worker("my_worker.js");
worker.onmessage = function(e) {
console.log(e.data);
};
worker.postMessage("Bobby");
和my_worker.js
如下所示:
self.onmessage = function(e) {
self.postMessage("Hello " + e.data);
};
然后我运行:cfx run
来运行扩展。结果如下:
var worker = new Worker("my_worker.js");
worker.onmessage = function(e) {
console.log(e.data);
};
worker.postMessage("Bobby");
(addon-sdk-1.17)me:libme$cfx在
“/Applications/Firefox.app/Contents/MacOS/Firefox-bin”。使用配置文件
在
“/var/folders/p1/zzdzcrrx6pq96hgsmy5xjqmh0000gp/T/tmp57OYe9.mozrunner”。
console.error:test:Message:ReferenceError:Worker未定义
堆栈:
@resource://jid1-zmowxggdley0aa-at-jetpack/test/lib/main.js:1:9 CuddlefishLoader/options在开始编写代码之前阅读可能是个好主意 需要使用
require
函数导入main.js
的Firefox附加SDK。没有全局Worker
对象,因为错误非常明确。内容脚本需要附加到某个HTML页面上;它不能单独存在。获取工作程序的三种最常见的方法是将内容脚本附加到
使用
一个不可见的背景页面,可能就是你想要的
pageWorker = require("sdk/page-worker").Page({
contentScript: "console.log(document.body.innerHTML);",
contentURL: "http://en.wikipedia.org/wiki/Internet"
});
请注意,它们的工作方式与worker
s非常相似,因为它们具有onMessage
和port
属性
还要注意的是,
onMessage
用大写字母M
在开始编写代码之前阅读可能是个好主意
需要使用require
函数导入main.js
的Firefox附加SDK。没有全局Worker
对象,因为错误非常明确。内容脚本需要附加到某个HTML页面上;它不能单独存在。获取工作程序的三种最常见的方法是将内容脚本附加到
使用
一个不可见的背景页面,可能就是你想要的
pageWorker = require("sdk/page-worker").Page({
contentScript: "console.log(document.body.innerHTML);",
contentURL: "http://en.wikipedia.org/wiki/Internet"
});
请注意,它们的工作方式与worker
s非常相似,因为它们具有onMessage
和port
属性
还要注意的是,在Firefox插件中,
onMessage
是用大写字母M
拼写的,请使用ChromeWorker而不是worker
在main.js中添加以下行
var { ChromeWorker } = require("chrome");
var self = require("sdk/self");
var data = self.data;
var localWorker = new ChromeWorker(data.url("my_worker.js"));
worker.onmessage = function(e) {
console.log(e.data);
};
worker.postMessage("Bobby");
self.onmessage = function(e) {
self.postMessage("Hello " + e.data);
};
my_worker.js
var { ChromeWorker } = require("chrome");
var self = require("sdk/self");
var data = self.data;
var localWorker = new ChromeWorker(data.url("my_worker.js"));
worker.onmessage = function(e) {
console.log(e.data);
};
worker.postMessage("Bobby");
self.onmessage = function(e) {
self.postMessage("Hello " + e.data);
};
将您的my_worker.js文件放入data/目录。在Firefox插件中,使用ChromeWorker而不是worker 在main.js中添加以下行
var { ChromeWorker } = require("chrome");
var self = require("sdk/self");
var data = self.data;
var localWorker = new ChromeWorker(data.url("my_worker.js"));
worker.onmessage = function(e) {
console.log(e.data);
};
worker.postMessage("Bobby");
self.onmessage = function(e) {
self.postMessage("Hello " + e.data);
};
my_worker.js
var { ChromeWorker } = require("chrome");
var self = require("sdk/self");
var data = self.data;
var localWorker = new ChromeWorker(data.url("my_worker.js"));
worker.onmessage = function(e) {
console.log(e.data);
};
worker.postMessage("Bobby");
self.onmessage = function(e) {
self.postMessage("Hello " + e.data);
};
把你的my_worker.js文件放到data/目录中。太棒了,回答得很好。:)太棒了,回答得很好。:)知道如何让webworker importScripts功能为chrome workers工作吗?知道如何让webworker importScripts功能为chrome workers工作吗?