i dati del negozio JavaScript possono essere memorizzati esclusivamente per un'istanza della window del browser?

C'è un modo JavaScript per archiviare i dati che sono univoco a una window del browser, in modo che se l'utente ha più windows aperte (tutto lo stesso browser, per esempio: Firefox), each window avrà dati univoco. … a differenza di un cookie, condiviso da tutte le windows.

I miei utenti devono aprire più windows, alla stessa pagina html, per visualizzare i dati embedded dinamici. Ogni window, allo stesso tempo, mostra i dati dynamicmente da una diversa origine incorporata.

Quindi, il mio JavaScript deve essere in grado di distinguere una window da un altro.

L'unica cosa che posso pensare è impostare window.name … non l'ho nemless provato, ma per quanto ne so, dovrebbe sopravvivere alla navigazione di pagina come come fa un cookie – tornerò in un sec, andando a fare un po 'di test …

Sembrava funzionare bene, non sono sicuro di quale sia la lunghezza massima di window.name (modifica: 2MB cross-browser, molto più se si è escluso Opera – http://www.thomasfrank.se/sessionvars.html ). L'unica cosa che ho trovato era in Chrome, se si visita un altro dominio, la window.name è persa, ma in altri browser il nome ancora è presente, quindi è ansible, non è del 100% certo che devi contare su di esso che funziona sempre in futuro anche se.

L'altro modo per memorizzare lo stato per window / scheda è tramite l'URI, ma può anche essere complicato per la navigazione. Voglio dire che richiederebbe un uso disciplinato di un meccanismo di navigazione specifico per assicurarsi che non venga perduto per caso e sarebbe anche in vista dei tuoi utenti. L'avanzamento sarebbe che sarebbe bookmarkable / emailable ecc, se questo è un objective di progettazione.

Tutti questi methods saranno inadatti per i dati personali / sensibili / critici, ma per lo stato di visualizzazione volatile / transitorio, non vedo alcun problema.

Se si allegano i dati alle varie istanze di window, each context di window sarà diverso dagli altri.

 var w = window.open('somepage.html'); window.foo = 'bar'; w.foo = 'baz';