zoukankan      html  css  js  c++  java
  • js禁用回退键[backspace键]浏览历史跳转的解决办法 [转]

            
            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键]时页面会跳转到上一页,但是上一页加载失败,说会话已过期,

    问题描述到此结束.

    解决办法:

    第一直觉就是上网搜答案,但是结果不理想。

    第二上论坛上看看有没有解决办法,到是找到一个类似的问你

    ‘在IE里按backspace键时如何知道是发生在input还是在中文输入法框?’

    地址:http://www.iteye.com/problems/3272

    问题类似,但是不是解决办法,还好的就是我根据他的思路自己试着找解决办法。

    版本升级:

    当前版本 2.1 

    修复firefox下无法删除input里面字符的bug

    说明:

    不知道为毛,在firefox下出现问题了,之前确定测试过,然后有一个童鞋说这个脚本在firefox下不能用,会出现上面所说现象,我说我调试下,但是后来他说又可以了,

    不过经过我的测试这段脚本确实有问题,

    确实会出现上述问题,不过是时有时无。

    算了还是改一下吧,

    出现问题的原因:

    firefox下 var elem = event.relatedTarget || event.srcElement  无法获取到目标对象。

    所以换成target属性来获取。

    【转】http://q821424508.iteye.com/blog/1587025

  • 相关阅读:
    CPP Info Memo part3
    在Google搜索结果显示原始链接(转自 月光博客)
    libc 之 locales
    Git 分支管理与本地 repository 创建
    py2exe issue: ImportError: No module named _fontdata_enc_winansi (http://stackoverflow.com/)
    CPP Info Memo (Part 1)
    CPP Info Memo part2
    HOWTO: Increase write speed by 'aligning' FAT32(通过对齐 FAT32 提高U盘访问速度, 转载)
    (转载)Gentoo中文man乱码
    如何选择开源许可证?(转载)
  • 原文地址:https://www.cnblogs.com/yongtaiyu/p/3093216.html
Copyright © 2011-2022 走看看