Chrome 消息扩展:从注入的脚本到后台
Chrome message extension : From injected script to background
/* My Background */
console.log("Init BackGround ! ");
chrome.runtime.onMessageExternal.addListener(
(request, sender, sendResponse) => {
console.log("J'ai bien reçu un truc");
console.log(request);
console.log(sender);
}
);
// Inject script
chrome.webNavigation.onCompleted.addListener((details) => {
chrome.tabs.executeScript(details.tabId, {
file: "include/ts/injectScript.js",
runAt: "document_end"
});
}, {url: [{urlPrefix: "https://website.com"}]});
console.log("End Background init");
/* My injected script */
var extensionID = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
chrome.runtime.sendMessage(extensionID, {test : 123},(response) => {
console.log(response);
});
/* One part of my manifest.json (with good url) */
"externally_connectable": {
"matches": [
"*://*.exemple.com/tests/*"
]
},
"permissions": [..., "*://*.exemple.com/tests/*",...]
后台在页面加载时自动注入JS脚本
在控制台(在当前页面)执行的所有测试都有效,并且后台正在接收消息。
遗憾的是,虽然后台很好地注入了加载页面的脚本,但它没有收到任何消息。
对不起我的英语,
预先感谢您的回答
Jérémy-F
您必须使用 chrome.runtime.onMessage.addListener
而不是 chrome.runtime.onMessageExternal.addListener
来接收来自您自己的内容脚本的消息。
chrome.runtime.onMessageExternal
用于来自其他 extensions/apps 的消息。
/* My Background */
console.log("Init BackGround ! ");
chrome.runtime.onMessageExternal.addListener(
(request, sender, sendResponse) => {
console.log("J'ai bien reçu un truc");
console.log(request);
console.log(sender);
}
);
// Inject script
chrome.webNavigation.onCompleted.addListener((details) => {
chrome.tabs.executeScript(details.tabId, {
file: "include/ts/injectScript.js",
runAt: "document_end"
});
}, {url: [{urlPrefix: "https://website.com"}]});
console.log("End Background init");
/* My injected script */
var extensionID = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";
chrome.runtime.sendMessage(extensionID, {test : 123},(response) => {
console.log(response);
});
/* One part of my manifest.json (with good url) */
"externally_connectable": {
"matches": [
"*://*.exemple.com/tests/*"
]
},
"permissions": [..., "*://*.exemple.com/tests/*",...]
后台在页面加载时自动注入JS脚本
在控制台(在当前页面)执行的所有测试都有效,并且后台正在接收消息。
遗憾的是,虽然后台很好地注入了加载页面的脚本,但它没有收到任何消息。
对不起我的英语, 预先感谢您的回答
Jérémy-F
您必须使用 chrome.runtime.onMessage.addListener
而不是 chrome.runtime.onMessageExternal.addListener
来接收来自您自己的内容脚本的消息。
chrome.runtime.onMessageExternal
用于来自其他 extensions/apps 的消息。