TypeError: browser is undefined (Web Extension Messaging)
TypeError: browser is undefined (Web Extension Messaging)
我正在尝试使用以下代码将我的网页脚本与我的网络扩展的内容脚本进行通信
网页脚本
const browser = window.browser || window.chrome;
browser.runtime.sendMessage(message,
function (response) {
console.log(response);
}
);
但是,我一直收到错误 TypeError: browser is undefined
。如果我改用 chrome.runtime.sendMessage()
也是如此。
我该如何使用这个方法?
这里的问题是 user/webpage 脚本(非特权脚本)出于安全目的无法访问 JavaScript API 并且 browser
、chrome
是 JavaScript API 的一部分,只能由特权脚本访问,如 Web 扩展的后台脚本和内容脚本(同样,内容脚本无法访问所有 JavaScript APIs)。基本上,如果您需要将数据从网页脚本发送到后台脚本,应该使用 CustomEvent
将数据发送到充当桥梁的内容脚本,然后使用 [=16= 从那里将该数据发送到后台脚本]. PFB 示例代码
window.onload = function(){
document.dispatchEvent(new CustomEvent("myEvent",{
detail:["Hello","World"]
}));
}
contentscript.js
document.addEventListener("myEvent", function (event) {
browser.runtime.sendMessage({
data: event.detail
});
background.js
browser.runtime.onMessage.addListener(function (message) {
data = message.data;
// do stuff
});
我正在尝试使用以下代码将我的网页脚本与我的网络扩展的内容脚本进行通信
网页脚本
const browser = window.browser || window.chrome;
browser.runtime.sendMessage(message,
function (response) {
console.log(response);
}
);
但是,我一直收到错误 TypeError: browser is undefined
。如果我改用 chrome.runtime.sendMessage()
也是如此。
我该如何使用这个方法?
这里的问题是 user/webpage 脚本(非特权脚本)出于安全目的无法访问 JavaScript API 并且 browser
、chrome
是 JavaScript API 的一部分,只能由特权脚本访问,如 Web 扩展的后台脚本和内容脚本(同样,内容脚本无法访问所有 JavaScript APIs)。基本上,如果您需要将数据从网页脚本发送到后台脚本,应该使用 CustomEvent
将数据发送到充当桥梁的内容脚本,然后使用 [=16= 从那里将该数据发送到后台脚本]. PFB 示例代码
window.onload = function(){
document.dispatchEvent(new CustomEvent("myEvent",{
detail:["Hello","World"]
}));
}
contentscript.js
document.addEventListener("myEvent", function (event) {
browser.runtime.sendMessage({
data: event.detail
});
background.js
browser.runtime.onMessage.addListener(function (message) {
data = message.data;
// do stuff
});