我正在尝试在外部网页中加载native messaging example app,如下所示:
的test.html
<html>
<head>
</head>
<body>
<iframe src="chrome-extension://knldjmfmopnpolahpmmgbagdohdnhkik/main.html"</iframe>
</body>
</html>
我在应用的清单中添加了web_accessible_resources
属性:
的manifest.json
{
// <some code snipped>
"web_accessible_resources": ["main.html"]
}
但是,当我在test.html中使用该应用时,我在控制台中收到以下错误,来自应用内的JavaScript文件:
开发者控制台
未捕获TypeError:对象#没有方法'connectNative' main.js:51
有问题的代码行如下:
main.js
port = chrome.runtime.connectNative(hostName);
这是截图 - 当我点击Connect按钮(调用connect
功能)时会出现问题:
显然,这可以在应用程序独立运行时运行。如何在网页中加载应用程序?
答案 0 :(得分:1)
你做不到。除了极少数例外,Chrome避免了对开放网络的专有扩展。你要的确是这样:一个具有非标准能力的外部网页,因为它是在Chrome而不是其他浏览器中打开的。就像今天的网络一样,这种行为会导致糟糕的开发人员和用户体验。 native-messaging documentation表示Chrome扩展程序和Chrome应用程序可以使用您想要的功能。正如你所知道的那样,确实如此:它可以作为一个应用程序,但不是作为一个网络标准的iframe。这是设计的。
您可能想要编写Chrome扩展程序。您的网页应检测Chrome扩展程序是否已安装以及用户的浏览器是否为Chrome。如果它不是Chrome,则应该提供相应的错误消息。如果是Chrome但未安装扩展程序,则应敦促用户安装扩展程序。