所以我有一个带有事件的内容脚本,该事件触发了一个“启动”脚本的消息,我用它来创建一个带有本地 html 文件的选项卡并将相同的消息/变量传递给该选项卡。然后,该选项卡应根据变量加载指定的数据。它在大约 50% 的时间内按预期工作,让我相信这是一个同步问题。我可能不会以正确的方式解决这个问题,但这是我自己能做的最好的事情。
内容脚本(script.js):
function openHistory(event) {
var account = $(/*selector*/).html();
chrome.runtime.sendMessage(account);
}
启动脚本(launch.js):
chrome.runtime.onMessage.addListener(function(account) {
chrome.tabs.create({url: 'background.html'}, function(tab) {
chrome.tabs.sendMessage(tab.id, account);
});
});
HTML 脚本(background.js):
chrome.runtime.onMessage.addListener(function(account) {
loadPage(account);
});
function loadPage(account) {
chrome.storage.sync.get(account, function(data) {
// Do stuff with DOM
});
}
显现:
{
"manifest_version": 2,
"name": "Extension",
"version": "1.0",
"permissions": ["storage", "tabs"],
"background": {
"scripts": ["launch.js"],
"persistent": false
},
"content_scripts": [{
"js": ["jquery.js", "script.js"]
}]
}
更新:我在launch.js中的tabs.sendMessage的回调中添加了“alert(chrome.runtime.lastError.message)”,每当它不起作用时,我得到“无法建立连接。接收端不存在。”