1

ボタンが一度に Web ページの 1 つのインスタンスしか開かないようにしようとしていますが、機能しません。私はデバッグの過程にあり、ボタンを使用して開いたタブを閉じると、両方のアラートが同じ番号 (タブ ID (一意の番号ですか?)) を出力する必要があるという印象を受けました。彼らはしません。これが私のコードです..

var isOpen = false;
var myTabId = null;

chrome.tabs.onRemoved.addListener(function(tabId, removeInfo){
    if (isOpen == true)
    {
        alert(myTabId);
        alert(tabId);

    }
});

chrome.browserAction.onClicked.addListener(function (tab) {
    if (isOpen == false)
    {
        chrome.tabs.create({'url': "./selectpage.html"});
        isOpen = true;
        myTabId = tab.id;

        alert("new tab "+tab.id);

    }
});

前もって感謝します。

4

1 に答える 1

0

ここでの問題は、間違ったタブ ID を myTabId に保存していることだと思います。onClicked コールバックでは、拡張機能アイコンがクリックされたときにアクティブだったタブへの参照が渡されます。これは、応答で開いている新しいタブではありません。

新しいタブが作成されたときのコールバックを追加し、その ID への参照を保存する必要があります。

var isOpen = false;
var myTabId = null;

chrome.tabs.onRemoved.addListener(function(tabId, removeInfo){
    if (isOpen == true)
    {
        alert(myTabId);
        alert(tabId);

    }
});    

chrome.browserAction.onClicked.addListener(function (userTab) {
    if (isOpen == false)
    {
        chrome.tabs.create({'url': "./selectpage.html"}, function(myTab){
            isOpen = true;
            myTabId = myTab.id;

            alert("new tab "+myTabId);
        });
    }
});
于 2013-09-22T22:58:48.307 に答える