未捕获的TypeError:检测到chrome扩展名

时间:2015-12-20 07:50:58

标签: javascript jquery google-chrome google-chrome-extension

我们编写了一个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”。

任何人都可以帮助解决问题,以便检测已安装的扩展程序。

感谢。

1 个答案:

答案 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