我需要从网页按钮点击启动 Chrome应用。我找到了以下资源,'
建议使用 external_connectable 和 url_handlers ,但似乎无效。有没有正确的方法可以通过 chrome app extension id 来点击网页页面启动Chrome应用程序?
我是这个领域的新手,非常感谢你们的任何帮助:)
PS
我在点击我的网页上的按钮时尝试了以下命令,
chrome.management.launchApp('app id');
这导致错误Uncaught TypeError: Cannot read property 'launchApp' of undefined
。
答案 0 :(得分:6)
我找到了如何实现这一目标,其他人遇到了这个问题。
在您的网页点击按钮上,例如,包含以下代码,
//data passed from web to chrome app
chrome.runtime.sendMessage('your_chrome_app_id', { message: "version" },
function (reply) {
if (reply) {
if (reply.version) {
//log the response received from the chrome application
console.log(reply.version);
}
}
}
);
manifest.json 定义externally_connectable
网址/网址,如下所示,
{
"name": "App name",
"description": "App Desc",
"version": "1",
...
"externally_connectable": {
"matches": ["*://localhost:*/"]
}
}
在您的应用程序 background.js 中设置一个侦听器,当从网页发送消息时调用该侦听器,如下所示,
chrome.runtime.onMessageExternal.addListener(
function(request, sender, sendResponse) {
if (request) {
if (request.message) {
if (request.message == "version") {
//my chrome application initial load screen is login.html
window.open('login.html');
//if required can send a response back to the web site aswell. I have logged the reply on the web site
sendResponse({version: '1.1.1'});
}
}
}
return true;
});
希望这会有所帮助:)
答案 1 :(得分:1)
Hasitha的回复有效。但是在清单文件中我需要进行正则表达式更改。 对于URL
localhost:3905/manager
显然,external_connectible值应设置为
"externally_connectable": {
"matches": ["*://localhost:*/*"]
}
但由于某种原因,相同的网址无法与
匹配"externally_connectable": {
"matches": ["*://localhost*"]
}
没用。 生成的错误无效的匹配模式' :// localhost '