我有一个创建页面工作者的 SDK 插件
events.on(eventTarget, "sandbox", (details, content) => {
var pageWorker = worker.Page({
contentScriptFile: data.url("sandbox.js"),
contentURL: data.url("sandbox.html"),
contentScriptWhen: "end"
});
pageWorker.port.emit("detect-version", content, funcs);
pageWorker.port.on("version-detected", (result) => {
if (result.version) {
events.emit(eventTarget, "result-ready", details, results);
}
});
pageWorker.port.on("done", () => {
pageWorker.destroy();
});
});
正如您在沙盒事件中看到的那样,插件和页面工作者之间来回传递一些消息
- 页面工作者被创建
- 发送消息:检测版本
- 侦听检测到的版本
- 监听 done 事件,在 page worker 上调用 destroy()
我希望worker.destroy()
删除对象和背景页面等。这似乎不会发生。如果我进行一个小时的浏览器会话,则浏览器的内存使用率非常高,如果我签about:memory
入 Firefox,我会看到很多sandbox.html
Windows 条目,我猜这表明它们没有被破坏。
有谁知道这是否是 1.14 中的错误?还是我在这里做错了什么?其他选择?我需要一个可以与插件通信的沙盒页面,而 pageworker 似乎是目前唯一的选择。
我看到 SDK 存储库中有一个 2013 年 9 月 26 日提交的错误修复,可能与此有关https://github.com/mozilla/addon-sdk/commit/55aeedc69984a2c0df78ddb17cee35a960b1135b
提前感谢您对此 t 的任何帮助。