externally_connectable
是 Chrome 扩展的一种特性,允许网页与扩展进行双向通信。通过这种方式,网页可以调用扩展中的函数,扩展也可以向网页发送消息。这种通信机制是通过 chrome.runtime.sendMessage
和 chrome.runtime.onMessage
API 实现的。
externally_connectable
的 matches
字段,可以限制哪些网页可以与扩展通信,从而提高安全性。externally_connectable
配置对象包含以下字段:
matches
:一个 URL 模式数组,指定哪些网页可以与扩展通信。extensions
:一个扩展 ID 数组,指定哪些扩展可以与网页通信。externally_connectable
在扩展的 manifest.json
文件中配置 externally_connectable
:
{
"name": "My Extension",
"version": "1.0",
"manifest_version": 3,
"externally_connectable": {
"matches": ["<all_urls>"],
"extensions": ["<extension_id>"]
},
"background": {
"service_worker": "background.js"
}
}
在 background.js
中监听来自网页的消息:
chrome.runtime.onMessageExternal.addListener((message, sender, sendResponse) => {
console.log('Received message from web page:', message);
// 处理消息并发送响应
sendResponse({ data: 'Hello from extension!' });
});
在网页中使用 chrome.runtime.sendMessage
发送消息给扩展:
chrome.runtime.sendMessage('<extension_id>', { data: 'Hello from web page!' }, (response) => {
console.log('Received response from extension:', response);
});
manifest.json
文件中包含了 externally_connectable
配置,并且网页的 URL 符合 matches
字段的规则。externally_connectable
配置和 chrome.runtime.sendMessage
中使用的扩展 ID 是正确的。matches
字段配置正确,并且扩展已经请求了相应的权限。通过以上步骤和配置,你可以实现 WWW 向 Chrome 扩展发送数据的功能。
领取专属 10元无门槛券
手把手带您无忧上云