Antwort

1

Nein. Sie können nicht standardmäßig nach der Liste für eine bestimmte Registerkarte fragen.

Sie können jedoch auf die Registerkartenereignisse OnUpdated, onCreated usw. warten. Mit der tabId, die gleich bleibt, können Sie eine Liste von URLs in einem Hintergrundskript (background.js) führen, das immer beim Addon ausgeführt wird aktiviert.

Sie würden es tun, wie folgt:

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); 
} 

Der obige Code ist ein Proof of Concept. Einige Verbesserungen, die Sie beachten müssen: implementieren onClosed, das den Tab-Verlauf für diese ID zurücksetzt (arr [tabId] = null), implementiert onUpdated (wird sicher benötigt, dieselbe Logik wie in handleCreated).

Links:

+0

So ist es daher möglich, die Geschichte zu bewahren, für * jede * Tab getrennt? Und damit auch die Historie bei Anforderung für die aktuelle Registerkarte aufrufen zu können? – Gary

+0

Bitte beachten Sie den Code, den ich der Antwort hinzugefügt habe. – Smile4ever

+0

Okay danke. Vor WE war 'FillHistoryMenu' verfügbar, also ist es bedauerlich, dass sie das entfernt haben. – Gary

Verwandte Themen