How to prevent the user from using the back button of the browser with javascript? I have a page and I want it to use the back button.
How to prevent the user from using the back button of the browser with javascript? I have a page and I want it to use the back button.
The idea here to block the browser back button is to put a #hash in the browser url by preventing the page from returning and not disabling the button itself. And still introduce a msg to the user saying that he can not go back by the browser button.
It works in many browsers, including IE.
/**
noback v0.0.1
library for prevent backbutton
Author: Kiko Mesquita: http://twitter.com/kikomesquita
Based on stackoverflow
* Copyright (c) 2015 @ kikomesquita
*/
(function(window) {
'use strict';
var noback = {
//globals
version: '0.0.1',
history_api : typeof history.pushState !== 'undefined',
init:function(){
window.location.hash = '#no-back';
noback.configure();
},
hasChanged:function(){
if (window.location.hash == '#no-back' ){
window.location.hash = '#BLOQUEIO';
//mostra mensagem que não pode usar o btn volta do browser
if($( "#msgAviso" ).css('display') =='none'){
$( "#msgAviso" ).slideToggle("slow");
}
}
},
checkCompat: function(){
if(window.addEventListener) {
window.addEventListener("hashchange", noback.hasChanged, false);
}else if (window.attachEvent) {
window.attachEvent("onhashchange", noback.hasChanged);
}else{
window.onhashchange = noback.hasChanged;
}
},
configure: function(){
if ( window.location.hash == '#no-back' ) {
if ( this.history_api ){
history.pushState(null, '', '#BLOQUEIO');
}else{
window.location.hash = '#BLOQUEIO';
//mostra mensagem que não pode usar o btn volta do browser
if($( "#msgAviso" ).css('display') =='none'){
$( "#msgAviso" ).slideToggle("slow");
}
}
}
noback.checkCompat();
noback.hasChanged();
}
};
// AMD support
if (typeof define === 'function' && define.amd) {
define( function() { return noback; } );
}
// For CommonJS and CommonJS-like
else if (typeof module === 'object' && module.exports) {
module.exports = noback;
}
else {
window.noback = noback;
}
noback.init();
}(window));
If you want to display a msg on the screen you can use it in this way or put a alert
in the code.
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script><divid="msgAviso" style="display:none;">
<span><img src="desabilitaBotao.png"></span>
<span>Não é permitido voltar pelo botão do browser.</span>
</div>