我们编写了一个chrome扩展,通过本机消息传递从外部网页(部署在本地服务器tomcat中)调用。我们希望外部页面首先检测到用户安装了chrome扩展程序,然后与扩展程序进行通信。 这是扩展清单文件:
"permissions":
[
"tabs",
"http://*/*",
"nativeMessaging",
"management"
],
"externally_connectable":
{
"matches": ["http://localhost:8080/test.jsp"]}
]
外部页面将扩展名称为:
chrome.management.get(extension_id,function(a){alert("hi");});
但我在chrome console中遇到错误:
未捕获的TypeError:无法读取未定义的属性“get”。
任何人都可以帮助解决问题,以便检测已安装的扩展程序。
感谢。
答案 0 :(得分:1)
你正试图解决错误的问题。
如果您的扩展程序为externally_connectable
,则应尝试连接。否则你会得到一个有意义的错误。
请注意,如果至少有一个chrome.runtime.sendMessage
扩展程序可供收听,则externally_connectable
仅会显示在该页面上。所以你需要检查一下:
if(chrome && chrome.runtime && chrome.runtime.sendMessage) {
chrome.runtime.sendMessage(
extension_id,
message,
onMessageCallback
);
}
function onMessageCallback(response) {
if(chrome.runtime.lastError) {
// Something went wrong, probably the right extension is not installed
}
}
确保您的扩展程序中确实 代码正在聆听chrome.runtime.onMessageExternal
。