Chrome 应用程序中的清单文件可以是动态的吗?
Can the manifest file be dynamic in Chrome Apps?
我正在编写一个 Chrome 与网页通信的应用程序。为此,我在清单文件中添加了类似的内容。
"externally_connectable": {
"matches": ["*://*.example.com/*"]
}
但是 "example.com" 必须是动态的,因为每个客户都有自己的一个 Web 服务器。
有没有可能,用户(安装应用程序的人)可以更改 externally_connectable site/s。
据我所知,"externally_connectable"
是从提到的网页发送消息(带数据)的唯一官方方式 here
这需要为每个域预定义值。但是如果你只想做一个扩展来接受来自任何网页的消息怎么办?
如果你只是想通知另一方一些事情,你可以使用本机 JS Event
从一侧在 document
上调度它并在 document
上收听它同样来自另一端,因为 document
在扩展 content script
页面和网页之间共享。
您不能使用 JS CustomEvent
发送数据,因为每次发送数据时,由于 sandbox
任何扩展的影响,您收到的数据都是空的。
如果你想共享数据,那么到目前为止我知道的唯一解决方法——在花了大约一个月的时间开发一个扩展之后——是在某种存储和 JS
本机事件机制之间进行组合.
解决步骤(假设您需要网页向扩展程序发送一些数据):
- 通过网页在
document
上举办活动。
- 将数据临时保存在您喜欢的任何存储技术中
(localStorage,DOM 本身,或者其他什么……)
- 通过监听在另一端(分机)接收事件
document
.
- 读取数据并将其删除。
希望这对某人有所帮助,或者打开一扇门来讨论更好的方法。
还有一种网页可以通过内容脚本与扩展程序通信的替代方法。如果网页和扩展都由您完成,则可以使用此方法。
例如
web page <--> content script of extension <--> background script of
extension <--> native application
对于网页内容脚本的扩展通讯使用window.postMessage
和window.addEventListener
对于GoogleChrome浏览器,
对于扩展的内容脚本到扩展通信的后台脚本使用chrome.runtime.sendMessage
和chrome.runtime.onMessage.addListener
对于本机应用程序通信扩展的后台脚本使用chrome.runtime.sendNativeMessage
请确保您的代码具有必要的安全性。
我正在编写一个 Chrome 与网页通信的应用程序。为此,我在清单文件中添加了类似的内容。
"externally_connectable": {
"matches": ["*://*.example.com/*"]
}
但是 "example.com" 必须是动态的,因为每个客户都有自己的一个 Web 服务器。
有没有可能,用户(安装应用程序的人)可以更改 externally_connectable site/s。
据我所知,"externally_connectable"
是从提到的网页发送消息(带数据)的唯一官方方式 here
这需要为每个域预定义值。但是如果你只想做一个扩展来接受来自任何网页的消息怎么办?
如果你只是想通知另一方一些事情,你可以使用本机 JS Event
从一侧在 document
上调度它并在 document
上收听它同样来自另一端,因为 document
在扩展 content script
页面和网页之间共享。
您不能使用 JS CustomEvent
发送数据,因为每次发送数据时,由于 sandbox
任何扩展的影响,您收到的数据都是空的。
如果你想共享数据,那么到目前为止我知道的唯一解决方法——在花了大约一个月的时间开发一个扩展之后——是在某种存储和 JS
本机事件机制之间进行组合.
解决步骤(假设您需要网页向扩展程序发送一些数据):
- 通过网页在
document
上举办活动。 - 将数据临时保存在您喜欢的任何存储技术中 (localStorage,DOM 本身,或者其他什么……)
- 通过监听在另一端(分机)接收事件
document
. - 读取数据并将其删除。
希望这对某人有所帮助,或者打开一扇门来讨论更好的方法。
还有一种网页可以通过内容脚本与扩展程序通信的替代方法。如果网页和扩展都由您完成,则可以使用此方法。
例如
web page <--> content script of extension <--> background script of extension <--> native application
对于网页内容脚本的扩展通讯使用window.postMessage
和window.addEventListener
对于GoogleChrome浏览器,
对于扩展的内容脚本到扩展通信的后台脚本使用chrome.runtime.sendMessage
和chrome.runtime.onMessage.addListener
对于本机应用程序通信扩展的后台脚本使用chrome.runtime.sendNativeMessage
请确保您的代码具有必要的安全性。