您的位置:首页 > Web前端 > JavaScript

JS禁止浏览器后退键

2015-08-18 15:01 651 查看
当键盘敲下后退键(Backspace)后

1、禁止浏览器自动后退

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

//方法一:
////当键盘敲下后退键(Backspace)后
//1、禁止浏览器自动后退
//2、但不影响密码、单行文本、多行文本输入框等的回退操作
//window.onload = function () {
//    /****************************
//     * 作者:q821424508@sina.com   *
//     * 时间: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>


View Code

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

内容全部来源他处:

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

等等。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: