我正在开发的chrome / firefox Web扩展程序正常工作,但在firefox调试器中,它会出现此错误(在后台脚本中):&#34; 错误:脚本返回非结构化克隆数据< /强>&#34;试图运行时
chrome.tabs.executeScript({
file: "jquery-3.1.1.js",
runAt: 'document_end'
});
chrome.tabs.executeScript({
file: "findAndReplaceDOMText.js",
runAt: 'document_end'
});
chrome.tabs.executeScript({
file: "content.js",
runAt: 'document_end'
});
此外,我收到错误&#34; [例外...&#34;组件返回失败代码:0x80070057(NS_ERROR_ILLEGAL_VALUE)[nsIDOMWindowUtils.loadSheetUsingURIString]&#34; nsresult:&#34; 0x80070057(NS_ERROR_ILLEGAL_VALUE)&#34; location:&#34; JS frame :: resource://gre/modules/ExtensionUtils.jsm :: runSafeSyncWithoutClone :: line 60&#34;数据:没有] &#34;与行
chrome.tabs.insertCSS({
code: "html { visibility:hidden; }",
runAt: "document_end"
});
对于第一期,我迷路了,而第二期,我不知道非法的价值是什么。
的manifest.json
{
"manifest_version": 2,
"name": "Error Example",
"version": "0.1",
"description": "Replace a word.",
"icons": {
"48": "icons/black-48.jpg"
},
"permissions": [
"<all_urls>",
"activeTab",
"tabs",
"webNavigation"
],
"background": {
"scripts": ["background.js"]
}
}
background.js
var latestList = [];
function run_scripts(whenToRun) {
chrome.tabs.executeScript({
file: "jquery-3.1.1.js",
runAt: whenToRun
});
chrome.tabs.executeScript({
file: "findAndReplaceDOMText.js",
runAt: whenToRun
});
chrome.tabs.executeScript({
file: "content.js",
runAt: whenToRun
});
}
function onBeforeNavigate(details) {
chrome.tabs.insertCSS({
code: "html { visibility:hidden; }",
runAt: "document_end"
});
run_scripts("document_end");
}
chrome.webNavigation.onBeforeNavigate.addListener(onBeforeNavigate);
content.js
$(document).ready(function() {
var words_to_replace = [];
function replaceWord() {
var word1 = "comments";
var word2 = "bugs";
reWord1 = new RegExp(word1, "gi");
findAndReplaceDOMText(document.getElementsByTagName('body')[0], {
preset: 'prose',
find: reWord1,
replace: word2
});
$("html").css("visibility", 'visible');
}
replaceWord();
});
整个插件的作用是取代&#34;评论&#34;与&#34;错误&#34;。 insertCSS确保在替换单词之前不会看到页面。 executeScript和insertCSS都会在顶部提到错误,尽管它似乎不会对结果产生影响。
我应该担心错误还是不管它们?
答案 0 :(得分:0)
我不确定你是否已经解决了所有问题但是对于第二个问题,看起来你试图将CSS插入到已经插入的页面中。我遇到过这个问题一次。在重新插入chrome.tabs.removeCSS
之后,第二个错误就消失了。
答案 1 :(得分:0)
对于您的第一个错误,请在 content.js 末尾的新行添加true
或undefined
这样你只会得到真正的错误跳转到错误承诺
<强> 原因 强>
executeScript 返回内容脚本的最后一个评估语句
- &GT; https://developer.mozilla.org/en-US/Add-ons/WebExtensions/API/tabs/executeScript#Return_value