Javascript Chrome扩展-检测URL并执行应用程序
我知道,使用基本的chrome扩展,我们可以选择扩展可以工作的域(Javascript Chrome扩展-检测URL并执行应用程序,javascript,google-chrome,google-chrome-extension,Javascript,Google Chrome,Google Chrome Extension,我知道,使用基本的chrome扩展,我们可以选择扩展可以工作的域(),但是当用户访问特定域时,这是否可以执行应用程序(内部) 我之前看过,看到了“本地消息传递”。(我目前正在学习算术)当我在工作实验室的网站上时,我想让我的扩展自动打开calc.exe 我已经这样做了: manifest.json { "name": "Mon extension", "version": "0.0.1", "background": { "scripts": [ "back
),但是当用户访问特定域时,这是否可以执行应用程序(内部)
我之前看过,看到了“本地消息传递”。(我目前正在学习算术)当我在工作实验室的网站上时,我想让我的扩展自动打开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
提前谢谢。如果我的问题不够清楚,请告诉我,我会修改它。无法让您的问题生效,但我链接的示例非常有效,因此开始编辑该示例,最后得出以下结论:
- 下载
- 编辑native-messaging-example-host.bat并替换为: @回音 calc.exe
- 运行install_host.bat
- 在与主机文件夹相同的目录中创建名为app的文件夹
- 创建3个文件:background.js、main.js、manifest.json
chrome.runtime.onMessage.addListener(function(message,sender,sendResponse){
if (message.action == "open app") {
chrome.runtime.connectNative("com.google.chrome.example.echo");
}
});
chrome.runtime.sendMessage({action: "open app"}, function(response) {
console.log(response);
});
{
// 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"
]
}
main.js:
chrome.runtime.onMessage.addListener(function(message,sender,sendResponse){
if (message.action == "open app") {
chrome.runtime.connectNative("com.google.chrome.example.echo");
}
});
chrome.runtime.sendMessage({action: "open app"}, function(response) {
console.log(response);
});
{
// 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"
]
}
manifest.json:
chrome.runtime.onMessage.addListener(function(message,sender,sendResponse){
if (message.action == "open app") {
chrome.runtime.connectNative("com.google.chrome.example.echo");
}
});
chrome.runtime.sendMessage({action: "open app"}, function(response) {
console.log(response);
});
{
// 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"
]
}
{
//扩展ID:KNLDJMFMOPOLAPHPMMGBAGDOHDNHKIK
“密钥”:“migfma0gcsqgsib3dqebaquaa4gnacbiqbgqdcbhwzdvybq6bdpkis9mp4skqcmyxq/a52 jivhzkh4yo/9vjst3oayhspDce9rpocoeqvshshsfrew2nuec6ollyoffxib7kklgsmmfakkut/ffdnjyyy0xotbsn8yvLwqph09xay2y/f0al7vfo1ucqtKmtkT8frbgw9cqdidaqab”,
“名称”:“本机消息传递示例”,
“版本”:“1.0”,
“清单版本”:2,
“说明”:“向本机应用程序发送消息。”,
“内容脚本”:[{
“js”:[“main.js”],
“匹配项”:[“”]
}],
“背景”:{
“脚本”:[“background.js”]
},
“权限”:[
“nativeMessaging”
]
}
最后,安装扩展。尤其是这个,每次打开/加载页面时,都会打开calc.exe,可以通过匹配项轻松更改
另一件需要注意的事情是,如果清单中没有密钥,它似乎不起作用。如果您正确配置了所有内容,您可以添加一个内容脚本以在您想要的url上运行,使内容脚本将消息发送到后台脚本,并让后台脚本发送本机消息以启动应用程序。谢谢Patrick和juvian。Patrick,是的,我之前添加了正确的注册表项来注册添加“HKCU\Software\Google\Chrome\NativeMessagingHosts\com.Google.Chrome.calc”/ve/t REG\u SZ/d“mypath\\”/f Juvian,你能更精确一点吗?我没有完全理解本地消息传递的原则。你能给我举个例子吗?即使查看stackoverflow也没有帮到我。谢谢你的帮助@juvian:),但现在的问题是,当我添加
“匹配项”:[“”]、
,然后重新加载时,我的扩展生成一个错误:“无法识别的清单键‘匹配’”。如果我将其放在示例中。echo-win我没有任何错误,但calc不会显示。发生这种情况是因为它是一个应用程序吗?清单上没有匹配项,您需要一个内容脚本:我可以称您为“我的主”吗?非常感谢,现在一切都清楚了!我工作得很好!知道这些事情可以通过一个扩展来完成确实很有趣:)