我最近发现了chrome扩展的开发,并被runtime.excuteScript方法卡住了,第三个参数中的回调系统地返回给我一个空对象...
为了简洁起见,我将省略我所有的manifest.json(v2):
▼ manifest权限:
"permissions": [
"storage",
"cookies",
"tabs",
"background",
"activeTab",
"<all_urls>",
"*://*/*"
]
▼ manifest content-script:
"content_scripts": [
{
"matches": ["<all_urls>"],
"run_at": "document_end",
"js": ["js/content-script.js"]
}
]
我的目标是将localStorage的内容发送到我的扩展。
▼ pop-up.js:
chrome.tabs.executeScript(
null,
{ file: "js/content-script.js" },
(result) => {
if(result) console.log( "🔥 Result of content-script:",result )
else console.log("🤯 No content-script, no result")
}
);
▼ content-script.js:
localStorage;
▼ * 扩展控制台输出:*
🔥 Result of content-script: Array(1)
▶︎ 0: {}
length:1
▶︎ __proto__: Array(0)
请给我解释一下这个错误,让这个晚上过得很愉快!谢谢!
2条答案
按热度按时间kxeu7u2r1#
我从来没有找到解决方案。但我通过以下方法发送数据来解决这个问题:
▼ content-script.js:
▼ pop-up.js:
ttp71kqs2#
对我来说,这是因为我在
func
中返回了一个不可序列化的对象。必须返回String或int之类的简单值。问题是不会抛出异常,它会默默地删除结果