Come evitare che una pagina Web si allontani utilizzando JavaScript?Impedire a una pagina web di allontanarsi utilizzando JavaScript
risposta
Utilizzando onunload
consente solo di visualizzare i messaggi, ma non interrompe la navigazione (perché è troppo tardi). Tuttavia, è possibile utilizzare onbeforeunload
e sarà interrompere la navigazione:
window.onbeforeunload = function() {
return "Are you sure you want to navigate away?";
}
Edit: Rimosso confirm()
nella dichiarazione ritorno come questo ha causato una finestra di conferma come previsto, ma ha anche mostrato un secondo confermare con il risultato della prima conferma .
Il browser visualizzerà un prompt appropriato. Basta usare 'window.onbeforeunload = function() {return" "; } ' –
Ma non è abbastanza. E i controlli all'interno del modulo? Anche loro lo fanno scattare. – Fandango68
Utilizzare onunload.
Per jQuery, credo che questo funziona in questo modo:
$(window).unload(function() {
alert("Unloading");
return falseIfYouWantToButBeCareful();
});
Grazie mille ... –
La restituzione di false non cancellerà lo scaricamento sfortunatamente - l'evento 'download 'si attiva quando l'utente lascia la pagina, diversamente da' beforeunload' che si attiva poco prima (e può essere annullato) – Jimbo
@ altCognito: Mi hai dato una buona idea con falseIfYouWantToButBeCareful() Ora posso evitare il pop-up predefinito dato da IE o FF. Ma per il chrome non funziona. Guardando dentro – user367134
Nell'esempio di Ayman restituendo falso si impedisce la finestra del browser/scheda dalla chiusura.
window.onunload = function() {
alert('You are trying to leave.');
return false;
}
Grazie mille ... –
A meno che il browser non sia Opera, che salta l'evento onunload se la scheda/finestra/programma viene chiusa. – Powerlord
Quel messaggio di errore suggerito può duplicare il messaggio di errore che il browser già visualizza. In chrome, i 2 messaggi di errore simili vengono visualizzati uno dopo l'altro nella stessa finestra.
In chrome, il testo visualizzato dopo il messaggio personalizzato è: "Sei sicuro di voler lasciare questa pagina?". In firefox, non mostra affatto il nostro messaggio di errore personalizzato (ma visualizza comunque la finestra di dialogo).
Un messaggio di errore più appropriata potrebbe essere:
window.onbeforeunload = function() {
return "If you leave this page, you will lose any unsaved changes.";
}
o lo stile StackOverflow: "Hai iniziato a scrivere o modificare un post."
A differenza di altri metodi presentati qui, questo bit di codice sarà non perché il browser visualizzi un avviso che chiede all'utente se desidera andarsene; invece, sfrutta la natura evented del DOM per reindirizzare nuovamente alla pagina corrente (e quindi annullare la navigazione) prima che il browser abbia la possibilità di scaricarlo dalla memoria.
Poiché funziona cortocircuitando la navigazione direttamente, non può essere utilizzato per impedire che la pagina venga chiusa; tuttavia, può essere usato per disabilitare il frame-busting.
(function() {
var location = window.document.location;
var preventNavigation = function() {
var originalHashValue = location.hash;
window.setTimeout(function() {
location.hash = 'preventNavigation' + ~~ (9999 * Math.random());
location.hash = originalHashValue;
}, 0);
};
window.addEventListener('beforeunload', preventNavigation, false);
window.addEventListener('unload', preventNavigation, false);
})();
Diniego: Non si dovrebbe mai fare questo. Se su una pagina è presente un codice per il frame-frame, si prega di rispettare i desideri dell'autore.
come mostrare la modal se l'utente vuole chiudere il browser (clicca su chiudi)? veramente? –
Ho finito con questa versione leggermente diversa:
var dirty = false;
window.onbeforeunload = function() {
return dirty ? "If you leave this page you will lose your unsaved changes." : null;
}
Altrove ho impostato il flag dirty true quando il modulo viene sporcato (o, diversamente, non vuole impedire la navigazione di distanza). Questo mi consente di controllare facilmente se l'utente riceve o meno il prompt di conferma di navigazione.
Con il testo nella risposta selezionato si vede istruzioni ridondanti:
In IE se dirty è false, verrà mostrata una stringa "null". Basta avvolgerlo in una dichiarazione if. Vedi: http://stackoverflow.com/questions/11793996/onbeforeunload-handler-says-null-in-ie –
L'equivalente alla risposta accettata in jQuery 1.11:
$(window).on("beforeunload", function() {
return "Please don't leave me!";
});
risposta di altCognito usato l'evento unload
, che avviene troppo tardi perché JavaScript possa interrompere la navigazione zione.
L'equivalente in un modo più moderno e compatibile con browser, utilizzando le moderne API addEventListener.
window.addEventListener("beforeunload", function (e) {
var confirmationMessage = "\o/";
e.returnValue = confirmationMessage; // Gecko and Trident
return confirmationMessage; // Gecko and WebKit
});
Fonte: https://developer.mozilla.org/en-US/docs/Web/Events/beforeunload
Questa è una buona soluzione. –
- 1. Posso impedire al telefono di sospendere su una pagina web
- 2. interfaccia simile a una console su una pagina web utilizzando javascript
- 3. Impossibile reindirizzare a un'altra pagina utilizzando Javascript
- 4. aggiornare una pagina web locale utilizzando Python
- 5. javascript: reindirizzamento a una pagina?
- 6. accesso Javascript un'altra pagina web
- 7. Come impedire a Backspace di tornare indietro in javascript?
- 8. Architettura di un'applicazione Web JavaScript a pagina singola?
- 9. Allontanarsi da Itanium
- 10. Posso acquisire e salvare lo stato corrente di una pagina web utilizzando javascript
- 11. Visualizzazione dell'ora di un altro computer su una pagina Web utilizzando Javascript?
- 12. Cancella pagina HTML utilizzando JavaScript
- 13. come impedire agli utenti di chiudere una finestra in javascript?
- 14. Salvataggio di una pagina Web come immagine
- 15. Aggiungi canvas a una pagina con javascript
- 16. come impedire l'aggiunta di chiavi duplicate a un array javascript
- 17. Chiamare il metodo web di una pagina da javascript su un'altra pagina
- 18. Ottenere la fonte completa di una pagina utilizzando Javascript
- 19. Javascript per reindirizzare da #anchor a una pagina separata
- 20. Utilizzo di mechanize per accedere a una pagina Web
- 21. Trucchi per impedire al telefono di dormire nel browser web mobile utilizzando JavaScript/HTML?
- 22. Come impedire ai motori di ricerca di indicizzare una singola pagina del mio sito web?
- 23. Bibtex su una pagina Web?
- 24. utilizzando javascript in web view Android
- 25. chiama un numero utilizzando skype in una pagina web
- 26. Trova frase specifica in una pagina Web utilizzando PowerShell
- 27. Modifica blocchi JavaScript della pagina Web ... live
- 28. Web design "Una pagina"/"lunga pagina anteriore"?
- 29. aprire una pagina Web in IE utilizzando C#
- 30. scansione della pagina Web dinamica utilizzando htmlunit
Ciò che rende questa pagina uscire? – Niyaz
Secondo la domanda, JavaScript lo fa allontanare ... – Shog9
Possibile duplicato di [Come mostrare il "Sei sicuro di voler allontanarti da questa pagina?" quando vengono apportate modifiche?] (http://stackoverflow.com/questions/1119289/how-to-show-the-are-you-sure-you-want-to-navigate-away-from-this-page-when- ch) –