JS禁止浏览器后退键

当键盘敲下后退键(Backspace)后

1、禁止浏览器自动后退

2、但不影响密码、单行文本、多行文本输入框等的回退操作

//方法一:
////当键盘敲下后退键(Backspace)后
//1、禁止浏览器自动后退
//2、但不影响密码、单行文本、多行文本输入框等的回退操作
//window.onload = function () {
//    /****************************
//     * 作者:[email protected]   *
//     * 时间:2012-08-20            *
//     * version:2.1              *
//     *                          *
//     ****************************/
//    document.getElementsByTagName("body")[0].onkeydown = function () {

//        //获取事件对象
//        var elem = event.relatedTarget || event.srcElement || event.target || event.currentTarget;

//        if (event.keyCode == 8) {//判断按键为backSpace键  

//            //获取按键按下时光标做指向的element
//            var elem = event.srcElement || event.currentTarget;

//            //判断是否需要阻止按下键盘的事件默认传递
//            var name = elem.nodeName;

//            if (name != ‘INPUT‘ && name != ‘TEXTAREA‘) {
//                return _stopIt(event);
//            }
//            var type_e = elem.type.toUpperCase();
//            if (name == ‘INPUT‘ && (type_e != ‘TEXT‘ && type_e != ‘TEXTAREA‘ && type_e != ‘PASSWORD‘ && type_e != ‘FILE‘)) {
//                return _stopIt(event);
//            }
//            if (name == ‘INPUT‘ && (elem.readOnly == true || elem.disabled == true)) {
//                return _stopIt(event);
//            }
//        }
//    }
//}

//function _stopIt(e) {
//    if (e.returnValue) {
//        e.returnValue = false;
//    }
//    if (e.preventDefault) {
//        e.preventDefault();
//    }

//    return false;
//}

//方法二:
////当键盘敲下后退键(Backspace)后
//1、禁止浏览器自动后退
//2、但不影响密码、单行文本、多行文本输入框等的回退操作

//处理键盘事件 禁止后退键(Backspace)密码或单行、多行文本框除外
//function banBackSpace(e) {
//    var ev = e || window.event;//获取event对象
//    var obj = ev.target || ev.srcElement;//获取事件源 

//    var t = obj.type || obj.getAttribute(‘type‘);//获取事件源类型 

//    //获取作为判断条件的事件类型
//    var vReadOnly = obj.getAttribute(‘readonly‘);
//    var vEnabled = obj.getAttribute(‘enabled‘);
//    //处理null值情况
//    vReadOnly = (vReadOnly == null) ? false : vReadOnly;
//    vEnabled = (vEnabled == null) ? true : vEnabled;

//    //当敲Backspace键时,事件源类型为密码或单行、多行文本的,
//    //并且readonly属性为true或enabled属性为false的,则退格键失效
//    var flag1 = (ev.keyCode == 8 && (t == "password" || t == "text" || t == "textarea")
//    && (vReadOnly == true || vEnabled != true)) ? true : false;

//    //当敲Backspace键时,事件源类型非密码或单行、多行文本的,则退格键失效
//    var flag2 = (ev.keyCode == 8 && t != "password" && t != "text" && t != "textarea")
//    ? true : false;

//    //判断
//    if (flag2) {
//        return false;
//    }
//    if (flag1) {
//        return false;
//    }
//}

////禁止后退键 作用于Firefox、Opera
//document.onkeypress = banBackSpace;
////禁止后退键 作用于IE、Chrome
//document.onkeydown = banBackSpace;

//方法三:
////当键盘敲下后退键(Backspace)后
//1、禁止浏览器自动后退
//2、但不影响密码、单行文本、多行文本输入框等的回退操作

//处理键盘事件 禁止后退键(Backspace)密码或单行、多行文本框除外 

//<script language="javascript">
//    javascript:window.history.forward(1);
//</script>      

最佳方案为方法二,方法一在Chrome和IE下通过在Firefox下不通过。

内容全部来源他处:

http://volunteer521.iteye.com/blog/830522/

等等。

时间: 2025-01-01 16:33:54

JS禁止浏览器后退键的相关文章

多页面网站禁用浏览器后退键

如标题所说,本文提供的方法适用于多页面网站,如SPA单页面应用等不适用. 利用window.onpopstate和window.history.pushState 控制浏览器后退键失效,下面说一下如何实现. 1.在你需要禁止浏览器后退键的页面上加上下面的代码: <script> $(document).ready(function(){ //判断当前浏览器是否支持history和pushState,据我测试当前大部分浏览器都支持 if(window.history && win

js禁止浏览器页面后退功能

js禁止浏览器页面后退功能: <script> $(function(){ if(window.location.href.indexOf("/login") > -1) { //防止页面后退 history.pushState(null, null, document.URL); window.addEventListener('popstate', function () { history.pushState(null, null, document.URL);

JS 禁止浏览器右键菜单和刷新

1 <script language="javascript"> 2 //禁止按键F5 3 document.onkeydown = function(e){ 4 e = window.event || e; 5 var keycode = e.keyCode || e.which; 6 if( keycode = 116){ 7 if(window.event){// ie 8 try{e.keyCode = 0;}catch(e){} 9 e.returnValue =

js实现浏览器后退页面刷新

最近在开发中遇到一个问题: 在一个列表页面,点击进入详情,详情页面对其状态操作,其详情页面有做修改,然后点击浏览器后退,返回到列表页,在列表页面状态还是操作之前的,为解决状态统一需要手动刷新改列表页.通过一番折腾,终于查到相关的解决方案,实现方式如下: 1.在页面中增加隐藏域  <input type="hidden" id="refreshed" value="no"> 2.通过js设置和获取隐藏域值来自动刷新页面 $(functi

js禁止浏览器,微信,及手机物理键的返回

XBack = {}; (function(XBack){ XBack.STATE = 'x-back'; XBack.element; XBack.onPopState = function(event){ event.state === XBack.STATE && XBack.fire(); XBack.record(XBack.STATE); //初始化事件时,push一下 }; XBack.record = function(state){ history.pushState(s

App.js添加浏览器返回键支持

app.js http://code.kik.com/app/2/index.html (function(App,$){ var appLoad = App.load; var appBack = App.back; function getUrlPath(args, options, callback,url){ var path = null; if(typeof args === "string"){ path = args; }else if(typeof options =

js防止浏览器后退(键盘、鼠标手势)

这种方式,可以消除 后退的所有动作.包括 键盘.鼠标手势等产生的后退动作 history.pushState(null, null, document.URL); window.addEventListener('popstate', function () { history.pushState(null, null, document.URL); }); 原文地址:https://www.cnblogs.com/liuhaixia/p/9543856.html

禁止浏览器backspace键(退格键)时跳转页面(extjs,javascript)

Ext实现方式: //方法一  var key = new Ext.KeyMap(document,{   key: 8,   fn: function(obj,e){    var type = e.target.type;    var readonly = e.target.readOnly;    if(type != 'text' && type != 'textarea' && type != 'password'){     //e.preventDefaul

js 捕获浏览器后退事件

$(document).ready(function(e) {             var counter = 0;             if (window.history && window.history.pushState) {             window.onpopstate = function () {                         window.history.pushState('forward', null, '#');