私は現在、コンテキスト メニュー エントリを持つ Chrome 拡張機能を作成しています。それをクリックすると、Chrome は別のプロトコルを使用するアドレスを持つ新しいタブを開きます。(私の例は cmdown:// と呼ばれます)
とにかく、問題は、プロトコルを処理するためにプログラムをロードして開いた後、これらのタブを閉じることができないことです。
私のbackground.js:
chrome.contextMenus.removeAll();
var name1 = localStorage["name1"];
var name2 = localStorage["name2"];
var name3 = localStorage["name3"];
var path1 = localStorage["path1"];
var path2 = localStorage["path2"];
var path3 = localStorage["path3"];
var menuids = [];
function downloadImage(info, tab) {
for(var i = 0; i < menuids.length; i++) {
if(menuids[i] == info.menuItemId) {
switch(i) {
case 0:
chrome.tabs.create({"url":"cmdown://"+info.srcUrl+";"+path1,"active":false}, function(tab){
//Close tab here
});
break;
case 1:
chrome.tabs.create({"url":"cmdown://"+info.srcUrl+";"+path2,"active":false}, function(tab){
//Close tab here
});
break;
case 2:
chrome.tabs.create({"url":"cmdown://"+info.srcUrl+";"+path3,"active":false}, function(tab){
//Close tab here
});
break;
}
}
}
}
if(typeof name1 != "undefined" && typeof path1 != "undefined") menuids[0] = chrome.contextMenus.create({"title": name1, "contexts":["image"],
"onclick": downloadImage});
if(typeof name2 != "undefined" && typeof path2 != "undefined") menuids[1] = chrome.contextMenus.create({"title": name2, "contexts":["image"],
"onclick": downloadImage});
if(typeof name3 != "undefined" && typeof path3 != "undefined") menuids[2] = chrome.contextMenus.create({"title": name3, "contexts":["image"],
"onclick": downloadImage});