Oltre a history.length in JavaScript è possibile leggere/scrivere il nome della finestra.
Quindi se si controlla se ha un nome su carico ... è dovrebbe essere vuoto sul primo carico ... se si imposta su "pippo" ... su ogni carico successivo in quella finestra ... la proprietà window.name restituirà "foo" ... a meno che non apri un link in una nuova scheda/finestra ... quella nuova finestra non debba avere un nome impostato.
(a meno che naturalmente si apre un pop-up con window.open (url, nome, caratteristiche); che consente di pre-impostare il nome)
<script>
if(window.name == ''){
//first load (or Nth load in a new Tab/Window)
if(!SOME_VALUE_SET_FOR_2ND_TO_NTH_LOADS){
//set name so we can catch new Tab/Window
window.name = 'myWinName';
} else {
//we have a new Tab/Window (or something funky)
alert('What?! One window not cool enough for ya?\n' +
'Calling the InterWeb Police!');
}
} else if(window.name == 'myWinName'){
//2nd-Nth load
document.title = 'All is well... we think';
}
</script>
Avvertenze:
- Se la tua pagina viene inizialmente caricata in una finestra/frame che aveva già un nome ...le cose diventeranno eccentriche
- Se la tua pagina ha iframe (nominati) e hai dei collegamenti mirati in quegli iframe, c'è un bug in IE7/8 per cui quando l'utente apre quei link in una nuova scheda/finestra, la nuova scheda/window "erediterà" il nome dell'iframe originariamente preso di mira (molto errore ODD senza correzione mai previsto)
Si potrebbe anche guardare history.previous ... –
@Jason: Ottengo errori di autorizzazione in Firefox quando provo a guardare history.previous. – RichieHindle
@RichieHindle: hmmm ... Stavo provando a metterci un dito sopra ... ma sì ... ecco perché faccio schifo ... –