我创建了我的扩展程序。
我创建了一个content.js文件,在页面中注入了我的脚本"。
var SE = document.createElement('script');
SE.src = chrome.extension.getURL('SE.js');
(document.head || document.documentElement).appendChild(SE);
在SE.js文件中的我得到了这个脚本。在我的seExtID中,它是我的chrome扩展ID,因为如果我没有传递seExtID,我会收到此错误:
未捕获错误:从网页调用的chrome.runtime.connect()必须为其第一个参数指定扩展ID(字符串)
所以我将我的extentionID传递给sendMessage方法
chrome.runtime.sendMessage(seExtID, {
method: "LoadSettings"
},
function (config) {
defaultSettings = config;
});
在我的background.js文件中
chrome.runtime.onMessage.addListener(
function (request, sender, sendResponse) {
debugger;
switch(request.method){
case "SaveSettings":
var se_json = request.settings;
localStorage.setItem("se_settings", se_json);
break;
case "LoadSettings":
var obj = JSON.parse(localStorage.getItem("se_settings"));
sendResponse(obj);
break;
}
}
);
问题是,如果我从default_popup或者content.js调用我的SendMessage,那就是它的工作。
在content.js或default_popup中,执行的上下文可能已经存在,因此不需要seExtID。我可以通过seExtID调用我的发送消息,以及它的工作:
chrome.runtime.sendMessage( {
method: "LoadSettings"
},
function (config) {
defaultSettings = config;
});
如果我查看文档https://developer.chrome.com/extensions/runtime#method-sendMessage
string(可选)extensionId
要将邮件发送到的扩展程序/应用的ID。如果省略,邮件将发送到您自己的扩展程序/应用程序。如果从网页发送消息以进行Web消息传递,则必需。
我可能会错过一些东西......有人可以帮我这个吗?