Javascript 边缘扩展browser.runtime.sendmessage()
正在尝试将扩展从chrome转换为edge,但我发现browser.runtime.sendmessage()与侦听器之间存在问题。为了简化事情,我创建了一个简单的hello world扩展。这个新的扩展可以在chrome中使用,但不能在edge中使用。有人知道我需要改变什么吗 manifest.jsonJavascript 边缘扩展browser.runtime.sendmessage(),javascript,microsoft-edge,microsoft-edge-extension,Javascript,Microsoft Edge,Microsoft Edge Extension,正在尝试将扩展从chrome转换为edge,但我发现browser.runtime.sendmessage()与侦听器之间存在问题。为了简化事情,我创建了一个简单的hello world扩展。这个新的扩展可以在chrome中使用,但不能在edge中使用。有人知道我需要改变什么吗 manifest.json { "manifest_version": 2, "name": "My Cool Extension", "author" : "Sandbox", "version": "
{
"manifest_version": 2,
"name": "My Cool Extension",
"author" : "Sandbox",
"version": "0.1",
"content_scripts": [ {
"all_frames": true,
"js": [ "jquery-3.1.1.min.js", "content_script.js" ],
"matches": [ "http://*/*", "https://*/*", "file://*/*" ]
} ],
"permissions": [ "http://*/*", "https://*/*", "storage" ],
"background": {
"scripts": [
"jquery-3.1.1.min.js",
"background.js"
],
"persistent": true
}
}
background.js
chrome.runtime.onMessage.addListener(
function(request, sender, sendResponse) {
console.log(request.greeting);
if (request.greeting == "hello")
sendResponse({farewell: "goodbye"});
});
browser.runtime.sendMessage({greeting: "hello"}, function(response) {
if (response != undefined) {
console.log(response.farewell);
}
});
content\u scripts.js
chrome.runtime.onMessage.addListener(
function(request, sender, sendResponse) {
console.log(request.greeting);
if (request.greeting == "hello")
sendResponse({farewell: "goodbye"});
});
browser.runtime.sendMessage({greeting: "hello"}, function(response) {
if (response != undefined) {
console.log(response.farewell);
}
});
在此处可以找到Edge的正确语法: 在注释部分:
For Microsoft Edge, all extension APIs are under the browser namespace,
e.g. browser.browserAction.disable().
Microsoft Edge extension APIs use callbacks, not promises.
使用browser.runtime.sendMessage()而不是chrome.runtime.sendMessage()。我不确定,但我遇到了这个问题,看起来Edge需要刷新页面才能发送消息。在chrome中,您应该在Edge中使用
chrome.
api,你应该使用browser.*
api。据我所知,在edge或chrome中使用browser或chrome并不重要,但我没有意识到我是混搭的。星期一我回去工作的时候,我会让它们都一样,当我让它们都成为“浏览器”时,它就可以工作了。在我发现这一点差不多3年后,谢谢你花时间回答。