我知道使用基本的Chrome扩展程序,我们可以选择扩展程序可以使用的域(<all_urls>
),但是当用户访问特定域时,是否可以执行应用程序(内部)?
我之前看过并看过&#34; Native Messaging&#34;。 (我目前正在研究算术)当我在工作实验室的网站上时,我希望我的扩展能够自动打开calc.exe。
我已经这样做了:
的manifest.json
{
"name": "Mon extension",
"version": "0.0.1",
"background": {
"scripts": [ "background.js" ]
},
"browser_action": {
"default_title": "Ouvrir la calculatrice"
},
"permissions": [
"nativeMessaging"
],
"manifest_version": 2
}
但是我不明白如何管理javascript部分,有人能解释一下吗?
我的calc.bat的manifest.json:
{
"name": "application",
"description": "Lauching my app",
"path": "C:\\Users\\root\\Documents\\calc.bat",
"type": "stdio",
"allowed_origins": [
"chrome-extension://blfgmcilkaooeokpomhcpnfnhppjklcb"
]
}
Calc.bat只是:@echo off & start calc.exe
提前致谢。如果我的问题不够明确,请告诉我,我会修改它。
答案 0 :(得分:1)
无法让你的工作,但我链接的例子工作得很好,所以开始编辑那个,最后得到了这个:
编辑native-messaging-example-host.bat并替换为:
@echo off
CALC.EXE
运行install_host.bat
内容为:
<强> background.js:强>
chrome.runtime.onMessage.addListener(function(message,sender,sendResponse){
if (message.action == "open app") {
chrome.runtime.connectNative("com.google.chrome.example.echo");
}
});
<强> main.js:强>
chrome.runtime.sendMessage({action: "open app"}, function(response) {
console.log(response);
});
<强>的manifest.json:强>
{
// Extension ID: knldjmfmopnpolahpmmgbagdohdnhkik
"key": "MIGfMA0GCSqGSIb3DQEBAQUAA4GNADCBiQKBgQDcBHwzDvyBQ6bDppkIs9MP4ksKqCMyXQ/A52JivHZKh4YO/9vJsT3oaYhSpDCE9RPocOEQvwsHsFReW2nUEc6OLLyoCFFxIb7KkLGsmfakkut/fFdNJYh0xOTbSN8YvLWcqph09XAY2Y/f0AL7vfO1cuCqtkMt8hFrBGWxDdf9CQIDAQAB",
"name": "Native Messaging Example",
"version": "1.0",
"manifest_version": 2,
"description": "Send a message to a native application.",
"content_scripts": [{
"js": ["main.js"],
"matches": ["<all_urls>"]
}],
"background": {
"scripts": ["background.js"]
},
"permissions": [
"nativeMessaging"
]
}
最后,安装扩展程序。特别是每次打开/加载页面时都会打开calc.exe,这可以通过匹配轻松更改。
另一件需要注意的事情是,如果没有清单中的密钥,它似乎不起作用。