我正在尝试使用我的 firefox/chrome/safari 扩展从网页中提取内容。捕获工作正常,但是当我捕获完整的网页时,需要很长时间并且 UI 被阻止。我想将捕获/DOM 解析代码移动到不同的线程(Web Worker)。但是网络工作者无权访问 DOM。有没有办法解决这个问题?
我正在使用以下代码将脚本注入网页:
function executeScript(script, messageKey, callback) {
var wm = Components.classes["@mozilla.org/appshell/window-mediator;1"].getService(Components.interfaces.nsIWindowMediator);
var mainWindow = wm.getMostRecentWindow("navigator:browser");
mainWindow.gBrowser.selectedBrowser.messageManager.loadFrameScript(script, true);
mainWindow.gBrowser.selectedBrowser.messageManager.addMessageListener(messageKey, callback);
}
executeScript("chrome://extension/content/contentscript.js", "onSelectionReceived", onSelection);
所有的 DOM 处理都发生在这个脚本'contentscript.js'中