我正在尝试使用下面的代码将我的网页脚本与我的网络扩展的内容脚本进行通信
网页脚本
const browser = window.browser || window.chrome;
browser.runtime.sendMessage(message,
function (response) {
console.log(response);
}
);
但是,我不断收到错误TypeError: browser is undefined
。如果我使用也是如此chrome.runtime.sendMessage()
反而。
我应该如何使用这个方法?
这里的问题是,出于安全目的,用户/网页脚本(非特权脚本)无权访问 JavaScript API,并且browser
, chrome
是 JavaScript API 的一部分,只能通过特权脚本访问,例如 Web 扩展的后台脚本和内容脚本(同样,内容脚本无法访问所有 JavaScript API)。基本上,如果您需要将数据从网页脚本发送到后台脚本,CustomEvent
应该用于将数据发送到充当桥梁的内容脚本,然后使用以下命令将该数据发送到后台脚本browser.runtime.sendMessage
。 PFB 示例代码
window.onload = function(){
document.dispatchEvent(new CustomEvent("myEvent",{
detail:["Hello","World"]
}));
}
内容脚本.js
document.addEventListener("myEvent", function (event) {
browser.runtime.sendMessage({
data: event.detail
});
背景.js
browser.runtime.onMessage.addListener(function (message) {
data = message.data;
// do stuff
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)