javascript - 为什么 chrome.tabs.executeScript 方法的回调结果总是返回一个空对象?
问题描述
我最近发现了chrome 扩展开发并被runtime.excuteScript方法卡住了,第三个参数中的回调系统地返回了一个空对象......
为简洁起见,我将省去我所有的 manifest.json(v2):
▼清单权限:
"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 的内容发送到我的扩展程序。
▼弹窗.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")
}
);
▼内容-script.js:
localStorage;
▼扩展控制台输出:
Result of content-script: Array(1)
▶︎ 0: {}
length:1
▶︎ __proto__: Array(0)
请向我解释这个错误,让这个夜晚变得美好!谢谢!
解决方案
我从来没有找到解决方案。但我通过使用以下方法发送数据解决了这个问题:
▼ 内容-script.js:
chrome.runtime.sendMessage({'localStorage' : localStorage});
▼ 弹窗.js:
chrome.runtime.onMessage.addListener((message) => {message.localStorage});
推荐阅读
- java - 如何检索 x 次违规?
- javascript - 在搜索字段中键入第一个字母时打开一个 div,只要它不是星号 (*)?
- c - 错误:在 c 中赋值给具有数组类型的表达式
- tensorflow - 当 Conv2D Keras 层上有 3 个通道时,我必须使用什么内核大小?
- sql - Postgres 中的预约安排:查询预约的可用时间?
- python - 如果满足条件,如何在迭代该列表时在列表中插入值?
- vba - 发布几何集,SetDirect 错误
- tags - awscli 按多个标签值过滤 aws describe-auto-scaling-groups
- java - 如何使用 Filterable 类过滤 Firebase 实时数据库结果
- permissions - 如何在具有文件系统权限的 travis 上运行 golang 测试(如果可能,在 sudo 旁边?)