Come posso confermare che una finestra del browser è aperta, con Javascript?

StackOverflow https://stackoverflow.com/questions/221432

  •  03-07-2019
  •  | 
  •  

Domanda

Sto aprendo una nuova finestra del browser dal mio sito per alcuni membri. Tuttavia, alcuni potrebbero successivamente chiuderlo o potrebbe non essere stato possibile aprire inizialmente.

Esiste uno snippet di Javascript abbastanza semplice che può essere eseguito su ogni pagina per confermare se è aperta un'altra finestra del browser e, in caso contrario, fornire un collegamento per riaprirlo?

[chiarimento:] Il codice da verificare è che una finestra aperta sarebbe eseguita su altre pagine, non solo nella stessa finestra e URL che l'hanno aperta. Immagina un utente che accede, la finestra (tenta di) aprirsi e quindi naviga nella stessa scheda / finestra (o altri) per un po 'di tempo prima di chiudere la seconda finestra (o non si è mai aperta) - Voglio essere in grado notare che la finestra è stata chiusa qualche tempo dopo il tentativo iniziale di apertura / dopo la sua chiusura, quindi non sono sicuro che il controllo del ritorno di javascript da window.open () (con popup_window_handle.closed) sia facilmente utilizzabile, o addirittura possibile .

È stato utile?

Soluzione

Questo articolo eccellente e completo (" Quasi completo controllo delle finestre pop-up ") dovrebbe rispondere a tutte le tue domande sulle finestre popup javascript.

" JavaScript 1.1 ha inoltre introdotto la proprietà chiuso della finestra. Utilizzando questa proprietà, è possibile rilevare se una finestra è stata aperta e successivamente chiusa. Possiamo usarlo per caricare una pagina direttamente nella finestra di apertura se è ancora aperta per i browser abilitati per JavaScript 1.1: "

<script language="JavaScript"><!--
function open_main(page) {
    window_handle = window.open(page,'main');
    return false;
}
//--></script>

<script language="JavaScript1.1"><!--
function open_main(page) {
    if (opener && !opener.closed) {
        opener.location.href = page;
    }
    else {
        window_handle = window.open(page,'main');
    }
    return false;
}
//--></script>

<a href="example.htm" onClick="return open_main('example.htm')">example.htm</a>

Aggiunta: Puoi recuperare la maniglia della finestra in un'altra pagina facendo riferimento al nome del popup in questo modo:

window_handle = window.open(page,'myPopupName');

Immagino che nel tuo caso dovresti pensare a un modo coerente per creare tutti i nomi delle finestre popup nell'intera applicazione.

Altri suggerimenti

var myWin = window.open(...);

if (myWin.closed)
{
    myWin = window.open(...);
}

Non esiste un modo universale per verificarlo poiché ogni blocco popup ha un comportamento diverso. Ad esempio, Opera non mostrerà il pop-up, ma widow.closed restituirà false poiché dietro la scena Opera mantiene una copia shadow della finestra bloccata, nel caso in cui l'utente desideri comunque visualizzarla.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top