使用 URI Scheme 打开外部程序而不创建新选项卡
Open external program using URI Scheme without creating new tabs
我想将 url 传递给外部程序(用程序打开 url),但不创建新的 tab/window。我用 "chrome.contextMenus.create" 打开 url 程序:右键单击 link & "open with external program": http://postimg.org/image/usj1yb8gj/
我为我的 chrome-扩展编写了下一个代码:
chrome.runtime.onInstalled.addListener(function() {
chrome.contextMenus.create({
title: 'Open with some program',
id: 'nameOfprogram',
contexts: ['link'],
});
});
chrome.contextMenus.onClicked.addListener(function(info, tab) {
if (info.menuItemId === "nameOfprogram") {
//var win = window.open("NameOfUriScheme://" + info.linkUrl, '_blank'); // '_self' - doesn't work...
chrome.tabs.create({ url: "NameOfUriScheme://" + info.linkUrl },function(tab){setTimeout(function(){chrome.tabs.remove(tab.id);}, 1000);});
}
});
但是打开新标签需要 1 秒才能打开 url。
可以 uri-scheme:adress(当 uri 与特定程序相关联时)打开 而无需 使用 打开它时创建新选项卡上下文菜单?
我的天啊。我只需要将 create
替换为 update
- chrome.tabs.update({...});
我想将 url 传递给外部程序(用程序打开 url),但不创建新的 tab/window。我用 "chrome.contextMenus.create" 打开 url 程序:右键单击 link & "open with external program": http://postimg.org/image/usj1yb8gj/
我为我的 chrome-扩展编写了下一个代码:
chrome.runtime.onInstalled.addListener(function() {
chrome.contextMenus.create({
title: 'Open with some program',
id: 'nameOfprogram',
contexts: ['link'],
});
});
chrome.contextMenus.onClicked.addListener(function(info, tab) {
if (info.menuItemId === "nameOfprogram") {
//var win = window.open("NameOfUriScheme://" + info.linkUrl, '_blank'); // '_self' - doesn't work...
chrome.tabs.create({ url: "NameOfUriScheme://" + info.linkUrl },function(tab){setTimeout(function(){chrome.tabs.remove(tab.id);}, 1000);});
}
});
但是打开新标签需要 1 秒才能打开 url。 可以 uri-scheme:adress(当 uri 与特定程序相关联时)打开 而无需 使用 打开它时创建新选项卡上下文菜单?
我的天啊。我只需要将 create
替换为 update
- chrome.tabs.update({...});