Domanda

Supponiamo di voler avere un link o un pulsante che, quando l'utente fa clic su di esso, chiuderà il browser senza alcuna finestra di dialogo di conferma.

Deve funzionare in Internet Explorer 6, 7, 8 e Firefox.

È stato utile?

Soluzione

Ho fatto alcune ricerche e ho scoperto che non è possibile chiudere la finestra / scheda in Firefox se quella finestra / scheda non è aperta tramite JavaScript o se la scheda ha pagine di cronologia > 1 (ovvero pulsante Indietro selezionabile perché si naviga tra le pagine Web).

Modo di fare in Firefox: elimina prima la cronologia. Quindi puoi chiudere la finestra senza la casella di conferma. Non ho provato questa soluzione. Mi capita di leggere più pagine affidabili che descrivono come farlo.

Soluzione per Internet Explorer 6, 7, 8.

Con un piccolo aiuto dalla funzione di rilevamento del browser: http://www.quirksmode.org/js /detect.html , ecco come chiudere la finestra senza casella di conferma per più versioni di IE.

if ((userBrowser.browser == "Explorer" && (userBrowser.version == "8" || userBrowser.version == "7"))) {
        window.open('', '_self', '');
        window.close();
    } else if ((userBrowser.browser == "Explorer" && userBrowser.version == "6")) {
        window.opener = null;
        window.close();
    } else {
        window.opener = '';
        window.close(); // attempt to close window first, show user warning message if fails
        alert("To avoid data corruption/loss. Please close this window immedietly.");
    }

So che alcuni di voi potrebbero pensare che l'uso del rilevamento browser non sia una buona idea. Inoltre, molti credono che costringere gli utenti a chiudere la finestra sia una cosa negativa. Sono d'accordo con questa idea. Ma ne ho solo bisogno a causa dei requisiti software che ci viene chiesto di fare.

Spero che questo aiuti.

Altri suggerimenti

Sarebbe una grave violazione della sicurezza. Non sarai mai in grado di farlo.

Puoi, tuttavia, chiudere le finestre figlio aperte dal genitore. Supponiamo che tu abbia aperto un popup con una finestra principale, quella stessa finestra principale può avere un pulsante per chiudere il figlio. Mai il browser.

Penso che parte del problema qui sia che non sei chiaro del tuo obiettivo nella domanda. Dal tuo commento sulla risposta di Frankie, sembra che non hai davvero bisogno di chiudere la finestra, devi semplicemente proteggere il contenuto che era disponibile nella finestra.

Ecco cosa raccomando:

  1. Termina la sessione di accesso in base a un timeout (lato server). Quando il timeout è scaduto, un ricaricamento della pagina dovrebbe reindirizzare solo alla pagina di accesso.
  2. Sul lato client, controlla periodicamente le condizioni di timeout e reindirizza a una pagina di accesso o ad altre pagine che non necessitano di essere protette.

Francamente, di solito è meglio mantenere un utente sul tuo sito fino al momento in cui vogliono chiudere la scheda o comunque navigare via. Basta reindirizzarli a una pagina di destinazione che non deve essere sicura invece di provare a forzare la chiusura della scheda.

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