侧边栏壁纸
博主头像
落叶人生博主等级

走进秋风,寻找秋天的落叶

  • 累计撰写 130562 篇文章
  • 累计创建 28 个标签
  • 累计收到 9 条评论
标签搜索

目 录CONTENT

文章目录

关于屏蔽浏览器退格键的几个尝试

2024-05-12 星期日 / 0 评论 / 0 点赞 / 97 阅读 / 4383 字

大部分浏览器在浏览网页时,按退格键(BackSpace)会触发后退操作。但我希望尝试下如何屏蔽此功能。 我使用的操作系统为Win7,我用于测试的三个浏览器版本信息如下: 1、Internet Exlo

大部分浏览器在浏览网页时,按退格键(BackSpace)会触发后退操作。但我希望尝试下如何屏蔽此功能。

我使用的操作系统为Win7,我用于测试的三个浏览器版本信息如下:

1、Internet Exlorer 8.0.7601.17514(后面简称IE8)

2、Google Chrome 50.0.2661.102 m(后面简称Chrome)

3、Firefox 46.0.1(后面简称Firefox)

从网上搜集的资料表明,可以通过添加js代码的方式屏蔽退格键。

如有页面page1.html代码如下:

<html>  <head>    <title>测试页面1</title>  </head>  <body>    <input type="button" id="openNewPage" value="打开新页面" onclick="openNewPage();" />    <script>      function openNewPage() {        window.location.href = "file:///C:/Users/Tsybius/Desktop/ShieldBpTest/page2.html";      }    </script>  </body></html>

该页面可以打开另一个页面page2.html:

<html>  <head>    <title>测试页面2</title>  </head>  <body>    <p>这是一张测试页面</p>    <input type="text" id="testText" />    <script>        //参考自 http://q821424508.iteye.com/blog/1587025        window.onload = function() {              if (navigator.userAgent.indexOf('Firefox') >= 0) {                alert("检测到您正使用火狐浏览器,请将 about:config 中 browser.backspace_action 设置为 2");                return;            }            document.getElementsByTagName("body")[0].onkeydown = function() {                if(event.keyCode==8) {                    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;          }      </script>  </body></html>

这个方式经过试验,通过点击page1的按钮进入到page2后,在page2按下退格键,如果当前焦点在文本输入框中则可进行正常的删除,否则并不会触发退后功能。不过这个方法适用于Chrome和IE8,在Firefox的试验并没有成功。

这个问题网上有人说是因为Firefox用了W3C DOM,而IE用的是IE DOM。但即使用了变通的办法获取到了Firefox的event,也无法阻止退格键对页面的后退。

再后来,我发现了Firefox本身就提供了一个屏蔽退格键的功能。进入Firefox的about:config页面,找到属性browser.backspace_action,这个属性的介绍可以参考页面:

http://kb.mozillazine.org/Browser.backspace_action

这个属性的值,有0、1、其他三类取值:

0:按下Backspace键后会返回session历史中上一个打开的页面,按下Shift+Backspace键反之。(Windows系统默认)

1:按下Backspace键后会在当前页的基础上向上滚动一页,按下Shift+Backspace键反之。(2006年12月7日以前编译的Linux默认)

其他:填写其他任何整数值都会屏蔽BackSpace键。(2006年12月7日以后编译的Linux版本,默认值为2)

将这个配置项设为2,就可以屏蔽掉Firefox浏览器的BackSpace快捷键了。

END

广告 广告

评论区