我正在尝试创建一个chrome扩展程序,以打开一个自定义URI(然后将在另一个已注册到系统的应用程序中打开一个已注册的协议URI)。
例如,我的自定义协议URI为mycustomapp://input-arguments-here
如果我创建一个带有锚点<a href="mycustomapp://input-arguments-here">Link</a>
的HTML页面,则会按预期打开带有input-arguments-here
的自定义应用。
我创建了一个Chrome扩展程序来打开我的自定义URI。
function openCustomURIScheme(info, tab) {
chrome.tabs.create({
url: "mycustomapp:/" + info.linkUrl
},
function(newTab) {
setTimeout(function() {
chrome.tabs.remove(newTab.id);
}, 250);
}
);
}
在Firefox中,这很好用。它打开对话框,提示用户“打开”扩展名。同时,它会关闭在我们创建标签页转到自定义URI时打开的空白标签页。
在Chrome中,这不起作用。调用chrome.tabs.remove(newTab.id)
时,它关闭选项卡和,提示在外部应用程序中打开链接。
如果我忽略了这一点:
setTimeout(function() {
chrome.tabs.remove(newTab.id);
}, 250);
它可以工作,但是每次启动自定义URI时,我都会得到一个空选项卡。
如何从chrome扩展程序中打开自定义URI,而又不留下空白的标签窗口?
答案 0 :(得分:0)
这是我解决问题的方法。
我创建了一个“安装时”处理程序,该处理程序在安装扩展名时告诉显示HTML,它将指示用户单击指向自定义URI的链接,并告诉用户单击自定义URI上的“始终”复选框,以便将来不会提示他们。
类似的东西:
为了完成安装,请单击下面的此链接,然后 出现提示时,选择“始终在此处自定义应用程序中打开链接”。
然后,现有解决方案会在该选项卡中的选项卡中打开它,然后在毫秒的延迟后像在Firefox上一样关闭该选项卡,因为没有更多提示。