答えて

1

いいえ。デフォルトでは、特定のタブのリストを要求することはできません。

ただし、更新したonCreatedなどのタブイベントをリスンすることができます。同じままのtabIdを使用すると、URLのリストをバックグラウンドスクリプト(background.js)に保持できます。有効になっています。

あなたはこのようにそれを行うだろう:

let arr=[]; // At the top of background.js 
browser.tabs.onCreated.addListener(handleCreated); // Somewhere in background.js 

function handleCreated(tab) { 
    let tabId = tab.id; 
    if(arr[tabId]==null) arr[tabId] = []; 
    arr[tabId].push(url); 
} 

function getHistoryForCurrentTab(){ 
    function currentTabs(tabs) { 
     // browser.tabs.query returns an array, lets assume the first one (it's safe to assume) 
     let tab = tabs[0]; 
     // tab.url requires the `tabs` permission (manifest.json) 
     // We will now log the tab history to the console. 
     for(let url of arr[tab.id]){ 
      console.log(url); 
     } 
    } 

    function onError(error) { 
     console.log(`This should not happen: ${error}`); 
    } 

    browser.tabs.query({currentWindow: true, active: true}).then(currentTabs, onError); 
} 

上記のコードは、コンセプトの証明です。あなたが考慮する必要があるいくつかの改善点:onClosedを実装して、そのIDのタブ履歴をリセットする(arr [tabId] = null)、onUpdatedを実装します(handleCreatedと同じロジックが必要です)。

リンク:

+0

だから、別途*各*タブのため、歴史を保持することが可能ですか?したがって、現在のタブについては、要求されたときに履歴を呼び出すこともできますか? – Gary

+0

答えに追加したコードをご覧ください。 – Smile4ever

+0

よろしくお願いいたします。 WEの前に、 'FillHistoryMenu'が利用可能でしたので、残念ながら削除しました。 – Gary

関連する問題