Tam*_* Vo 5 javascript firefox-addon firefox-addon-webextensions
我想将脚本从 firefox web 扩展注入到 tabId 思想 browser.tabs.executeScript API。
我有一个文件 Browser.js
MyFunc.Browser = (function() {
var self;
function Browser() {
self = this;
}
Browser.getExtensionURI = function() {
return "chrome-extension://";
};
return Browser;
})();
Run Code Online (Sandbox Code Playgroud)
并执行脚本函数:
var executing = browser.tabs.executeScript(tabId, {
file: "js/contentscripts/Browser.js"
});
executing.then(function(results) {
console.log("url: " + tabUrl + ", result", results);
}, function(error) {
return console.log("Inject scripts error: " + error);
});
Run Code Online (Sandbox Code Playgroud)
但是脚本无法注入到选项卡并显示错误。
我该如何解决?
清单文件:
{
"name": "abc",
"background": {
"page": "background.html"
},
"browser_action": {
"default_icon": "icons/icon_19.png",
"default_popup": "login.html",
},
"content_scripts": [
{
"web_accessible_resources": [
"js/contentscripts/Browser.js",
],
"js": [
"js/contentscripts/ContentScript.js"
],
"matches": [
"file://*/*",
"http://*/*",
"https://*/*"
],
"run_at": "document_end",
"all_frames": true
},
{
"js": [
"js/contentscripts/Browser.js",
],
"matches": [
"file://*/*",
"http://*/*",
"https://*/*"
],
"run_at": "document_start",
"all_frames": true
}
],
"icons": {
"16": "icons/icon_16.png",
"19": "icons/icon_19.png"
},
"incognito": "spanning",
"permissions": [
"activeTab",
"tabs",
"http://*/*",
"https://*/*",
"<all_urls>"
],
"content_security_policy": "script-src 'self' 'unsafe-eval'; object-src 'self'",
"version": "1.1.16"
}
Run Code Online (Sandbox Code Playgroud)
我想我现在明白你的问题了。
您的executeScript 的返回数据必须是可克隆的结构化数据。
为了被认为是结构化克隆,数据必须匹配以下数据类型之一:
在您的情况下,问题是您返回的对象在其属性中具有函数。因此它是非结构化可克隆的,这解释了您的错误。