Disabilitazione del pulsante Indietro sul browser

Sto scrivendo un’applicazione che, se l’utente risponde, può inviare nuovamente le stesse informazioni e compromettere il stream e l’integrità dei dati. Come posso disabilitarlo per gli utenti con e senza javascript?

Non dovresti.

È ansible albind alcuni script all’evento onbeforeunload di una pagina e confermare con l’utente che è quello che vogliono fare; e puoi andare un po ‘oltre e provare a disabilitarlo, ma ovviamente funzionerà solo per gli utenti che hanno triggersto javascript. Cerca invece di riscrivere l’app in modo da non eseguire transazioni su ogni pagina inviata, ma solo alla fine del processo.

Ti chiedo caldamente di andare a lunghezze eroiche per evitare di rompere il pulsante indietro, è un modo sicuro per allontanare i tuoi utenti e persino arrivare al numero 1 dei Top 10 Web Design Mistakes di Jacob Neilsen nel 1999 .

Forse potresti prendere in considerazione piuttosto la domanda: “Come evitare di rompere il pulsante Indietro per ?”

Se la risposta di Scott raggiunge il punto, valutare la possibilità di cambiare stream al modello PRG. Se è qualcos’altro, quindi dai un po ‘più di dettagli e vedi come possiamo aiutarti.

Ho trovato un piccolo trucco che disabilita il pulsante Indietro utilizzando JavaScript. Ho controllato su Chrome 10, Firefox 3.6 e IE9:

  Untitled Page    Try to hit back!   

La migliore opzione non è dipendere dai postback per controllare il stream, tuttavia se sei bloccato con esso (per ora)

puoi usare qualcosa del genere:

  Response.Cache.SetCacheability(HttpCacheability.NoCache); Response.Cache.SetExpires(Now.AddSeconds(-1)); Response.Cache.SetNoStore(); Response.AppendHeader("Pragma", "no-cache"); 

Presto scoprirai che non funzionerà su tutti i browser, ma in questo caso puoi introdurre un controllo nel tuo codice come:

  if (Page.IsPostBack) { if (pageIsExpired()){ Response.Redirect("/Some_error_page.htm"); } else { var now = Now; Session("TimeStamp") = now.ToString(); ViewState("TimeStamp") = now.ToString(); } private boolean pageIsExpired() { if (Session("TimeStamp") == null || ViewState("TimeStamp") == null) return false; if (Session("TimeStamp") == ViewState("TimeStamp")) return true; return false; } 

Questo risolverà il problema fino ad un certo punto, codice non controllato – solo a scopo di esempio ..

È ansible disabilitare il pulsante Indietro in tutti i principali browser. Usa solo i valori hash per disabilitare completamente il pulsante Indietro. Metti queste 5 linee di codice nella tua pagina

   

Descrizione dettagliata

Ecco un post precedente su di esso: Prevenire l’uso del pulsante Indietro (in IE)

Qualunque cosa tu abbia inventato per disabilitare il pulsante Indietro potrebbe non fermare il pulsante Indietro nei browser futuri.

Se è in ritardo nel ciclo di sviluppo ti suggerisco di provare alcuni suggerimenti sopra, ma quando hai tempo devi strutturare il stream in modo che il pulsante Indietro non interferisca con la logica del tuo sito, semplicemente riporta l’utente alla pagina precedente come si aspettano che lo faccia.

È vero, è necessario aggiungere una validazione appropriata per assicurarsi che i dati duplicati non rovinino le cose. Tuttavia, come nel mio caso, non ho il pieno controllo dei dati dal momento che sto usando alcune API di terze parti dopo il mio modulo. Quindi l’ho usato

 history.go(+1); 

Questo invierà l’utente alla “ricevuta” che dovrebbe arrivare dopo la pagina “pagamento” se tentano di tornare alla pagina “pagamento” (solo dando un pagamento per esempio). Usalo con parsimonia, però

È ansible pubblicare i dati su ciascun modulo in una finestra _NEW. Questo disabiliterà il pulsante Indietro su ogni finestra, ma senza javascript potrebbe essere difficile forzare il vecchio chiuso.

4 Guys di Rolla ha scritto questo articolo sulla distriggerszione del pulsante Indietro molto tempo fa (in una galassia molto lontana): http://www.4guysfromrolla.com/webtech/111500-1.shtml

Sono stato in grado di farlo usando:

  Response.Cache.SetExpires(DateTime.MinValue); Response.Cache.SetNoStore(); 

Quando ho usato Response.Cache.SetCacheability (HttpCacheability.NoCache); mi ha impedito di scaricare file di Office.

Trova sotto il link

Distriggers la funzionalità del pulsante Indietro del browser utilizzando JavaScript in asp.net | ASP.Net disabilita il pulsante Indietro del browser (usando javascript)

http://www.aspdotnet-suresh.com/2011/11/disable-browser-back-button.html