我有一个扩展程序,可以为任何需要它们的Web应用程序提供许多服务。我一直假设一个Web应用程序可以使用chrome.runtime.sendMessage(ext-id,message),但是当我尝试时,chrome.runtime上没有sendMessage函数。
我是否误解了sendMessage的使用位置,是否有其他技术可用于从任意Web应用程序与我的扩展程序进行通信?
答案 0 :(得分:0)
有几个选择。
首先,http://developer.chrome.com/extensions/manifest/externally_connectable.html最接近你现在的想法。您希望能够为任意网页添加专有的Chrome特定功能。 external_connectable将为您提供有限版本(请参阅http://developer.chrome.com/extensions/messaging.html#external-webpage示例),但仅适用于特定网页(例如* .yourdomain.com但不包括* .com)。
其次,您可以将网页中的postMessage转换为内容脚本(请参阅http://developer.chrome.com/extensions/content_scripts.html#host-page-communication),该脚本可以执行内容脚本所能执行的任何操作。如果您此时需要chrome。* API,则可以从内容脚本向您的扩展程序页面发送消息,该页面可以访问要求的任何chrome。* API。
最后,根据您的“服务数量”实际情况,您可以始终将另一个脚本直接执行到目标网页中,这类似于强制网页将其包含在内,就像它是另一个< script>一样。标签。 (只是类似于,不相同,因为注入通常在页面加载后发生。)