chrome.runtime.connectNative完整示例
时间: 2024-10-23 13:02:59 浏览: 9
chrome.VisualElementsManifest.xml
在Google Chrome浏览器扩展程序(Extension)中,`chrome.runtime.connectNative()` 是一个用于创建到浏览器内置(native)扩展API的通信通道的API。这些API通常是用来访问底层系统功能的,例如硬件访问、文件系统等,由于安全性原因,扩展一般不能直接与之交互。
下面是一个简单的示例,展示了如何使用 `connectNative()` 来发送消息到一个名为 "myNativeAPI" 的内置API:
```javascript
// 在manifest.json 中声明 native messaging 授权:
{
"name": "My Extension",
"version": "1.0",
"permissions": ["nativeMessaging"],
"background": {
"scripts": ["background.js"]
},
"externally_connectable": {
"matches": ["http://*/*"]
}
}
// background.js (背景脚本)
chrome.runtime.onConnect.addListener((port) => {
if (port.name === 'myNativeAPI') {
port.onMessage.addListener(function(msg) {
console.log('Received message from native:', msg);
// 在这里处理收到的消息
// 向 native API 发送响应
port.postMessage({ action: 'respond', data: 'Hello from extension!' });
});
// 接收 native API 的连接请求
port.postMessage({ action: 'hello' });
}
});
// 在 extension 的 content script 或者 popup.js 等地方调用 native API
chrome.runtime.connectNative('myNativeAPI').then((connection) => {
connection.postMessage({ action: 'request', data: 'Get some system info' });
});
```
在这个例子中,`contentScript` 或者 `popup.js` 中的内容脚本想要向 native API 请求信息,它会尝试建立一个连接。当连接建立后,可以发送消息并接收来自 native API 的回应。
阅读全文