无法在iframe中启用Chrome应用

时间:2013-11-27 11:36:27

标签: google-chrome iframe google-chrome-app chrome-native-messaging

我正在尝试在外部网页中加载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功能)时会出现问题:

JavaScript Error: Uncaught TypeError: Object #<Object> has no method 'connectNative'

显然,这可以在应用程序独立运行时运行。如何在网页中加载应用程序?

1 个答案:

答案 0 :(得分:1)

你做不到。除了极少数例外,Chrome避免了对开放网络的专有扩展。你要的确是这样:一个具有非标准能力的外部网页,因为它是在Chrome而不是其他浏览器中打开的。就像今天的网络一样,这种行为会导致糟糕的开发人员和用户体验。 native-messaging documentation表示Chrome扩展程序和Chrome应用程序可以使用您想要的功能。正如你所知道的那样,确实如此:它可以作为一个应用程序,但不是作为一个网络标准的iframe。这是设计的。

您可能想要编写Chrome扩展程序。您的网页应检测Chrome扩展程序是否已安装以及用户的浏览器是否为Chrome。如果它不是Chrome,则应该提供相应的错误消息。如果是Chrome但未安装扩展程序,则应敦促用户安装扩展程序。