0

我正在尝试在外部网页中加载本机消息传递示例应用程序,如下所示:

测试.html

<html>
<head>
</head>
<body>
<iframe src="chrome-extension://knldjmfmopnpolahpmmgbagdohdnhkik/main.html"</iframe>
</body>    
</html>

web_accessible_resources在应用程序的清单中添加了该属性:

清单.json

{
  // <some code snipped>
  "web_accessible_resources": ["main.html"]
}

但是,当我在 test.html 中使用该应用程序时,我在控制台中收到以下错误,该错误来自应用程序中的 JavaScript 文件:

开发者控制台

未捕获的类型错误:对象 # 没有方法 'connectNative' main.js:51

有问题的代码行如下:

main.js

port = chrome.runtime.connectNative(hostName);

这是一个屏幕截图 - 当我单击“连接”按钮(调用该connect函数)时会出现问题:

JavaScript 错误:未捕获的类型错误:对象 #<Object> 没有方法“connectNative”

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

4

1 回答 1

1

你不能。除了极少数例外,Chrome 会避免对开放网络进行专有扩展。您所要求的正是:一个具有非标准功能的外部网页,仅仅是因为它是在 Chrome 而不是其他浏览器中打开的。就像今天的网络一样,这种行为会导致糟糕的开发人员和用户体验。本机消息传递文档建议您想要的功能可用于 Chrome 扩展程序和 Chrome 应用程序。正如您所发现的那样,情况确实如此:它可以作为应用程序运行,但不能作为网络标准 iframe。这是设计使然。

您可能想编写一个 Chrome 扩展程序。您的网页应检测是否安装了 Chrome 扩展程序以及用户的浏览器是否为 Chrome。如果不是 Chrome,它应该给出适当的错误消息。如果是 Chrome 但未安装扩展程序,它应该敦促用户安装您的扩展程序。

于 2013-11-28T16:06:28.220 回答