Qualche modo per identificare la scheda del browser in JavaScript?

Devo essere in grado di identificare la scheda in cui mi trovo all’interno del browser. Non ci sono alcune informazioni che posso ottenere dal browser per identificare la scheda? Non ho bisogno di sapere nulla su altre tabs, ho solo bisogno di un id per la scheda in cui mi trovo. Potrebbe essere un numero casuale o sequenziato, o un timbro data-ora, purché rimanga lo stesso per il vita della scheda.

Ho un’app client che effettua una connessione BOSH su HTTP a un server remoto e, se la apro in più tabs, ogni istanza ha bisogno del proprio ID univoco o l’app fallisce, quindi ho solo bisogno di un numero univoco associato a la scheda per tutto il tempo in cui tale scheda esiste (cioè qualcosa che sopravvive alla pagina di aggiornamento mentre navigo nel sito che fornisce questa app). Sembra un gioco da ragazzi che dovrebbe essere disponibile nel browser, come window.tabId: è tutto ciò di cui ho bisogno. Ho un serio blocco di sviluppo perché non riesco a superare questa soluzione semplice, semplice e semplice che sembra non esistere. Ci deve essere un modo (una soluzione cross-browser a questo).

Qualche idea?

SessionStorage è per scheda / finestra, quindi è ansible definire un numero casuale in sessionStorage e ottenerlo all’inizio se esiste:

var tabID = sessionStorage.tabID ? sessionStorage.tabID : sessionStorage.tabID = Math.random(); 

AGGIORNAMENTO :
In alcuni casi, è ansible avere lo stesso sessionStorage in più tabs (ad esempio quando si duplica la scheda). In tal caso, il seguente codice può aiutare:

 var tabID = sessionStorage.tabID && sessionStorage.closedLastTab !== '2' ? sessionStorage.tabID : sessionStorage.tabID = Math.random(); sessionStorage.closedLastTab = '2'; $(window).on('unload beforeunload', function() { sessionStorage.closedLastTab = '1'; }); 

Devi usare html5, ma sessionStorage combinato con un guid casuale sembra essere quello che vuoi.

Non è ansible ottenere l’ID di tabulazione con javascript, ma in ogni caso esiste una soluzione che può aiutarti con l’utilizzo di sessioni / cookie diversi quando l’utente apre una nuova scheda.

Alcuni riferimenti:

Ottieni indice / Id della scheda del browser

ricevi gli urls delle tabs firefox dall’estensione di firefox

Come differire le sessioni nelle tabs del browser?

Ottieni una sessione unica in ogni scheda del browser

asp.net – sessione – più tabs del browser – sessioni diverse?

Una delle possibili soluzioni sta usando la proprietà “window.name”, ma non voglio usarla perché qualcun altro può usarla.

Ho trovato un’altra soluzione ansible: using sessionStorage. È supportato da FF3.5 +, Chrome4 +, Safari4 +, Opera10.5 + e IE8 +.

Se non ci sono probabilità che un utente apra 3 tabs in 2 millisecondi, potrebbe usare un timestamp e memorizzarlo in window.name e usarlo come chiave nella ricerca. Il valore window.name rimarrà con la scheda fino alla sua chiusura.

timestamp

Almeno per Chrome, dal 2013 c’è una risposta ufficiale: chrome.tabs API .