js禁止查看源文件屏蔽Ctrl+u/s、F12、右键等兼容IE火狐chrome


Posted in Javascript onOctober 01, 2020

键盘事件

一般处理键盘按键事件我们采用这样的方式

document.onkeydown=function (event) {
  //检测按下哪个键,作相应处理
};

event为键盘事件,对于chrome,firefox,IE(Edge),IE10,IE9均能支持function自带的e,而ie8以下只能识别windows.event,所以一般兼容写法为:event=event||window.event。获取按键码一般是event.keyCode,这个对各大浏览器都是兼容的。

document.onkeydown=function (event) {
   event=event||window.event;
   var key=event.keyCode;
   //检测按下哪个键,作相应处理
   if(key==...){
}    
 };

屏蔽浏览器默认事件的方法大致有三种:
1)event.preventDefault()
2)event.returnValue=false;
3)return false;

js禁止查看源文件屏蔽Ctrl+u/s、F12、右键等兼容IE火狐chrome

firefox的特殊方式支持是指,firefox这里一个比较坑爹的地方是,firefox需增加一个延迟才能生效,不然仍然会跳出浏览器的保存当前页面窗口,如下:

document.onkeydown=function (event) {
        //判断按键 
         var key=event.keyCode;
        if(key== 83 && e.ctrlKey){
            /*延迟,兼容FF浏览器 */
            setTimeout(function(){
              alert('ctrl+s');
            },1);
            event.preventDefault();//或者是 return false;  
          }

而IE10,IE9,IE8以下对于event.returnValue=false的特殊方式支持是指键盘事件event必须为window.event时ctrl+s的默认事件才能屏蔽,在event=event||window.event的兼容写法中,IE8及以下的形参event是空,所以会取值为window.event,而IE10,IE9的function形参event是有效的,所以取值直接为event,因此IE10,IE9在写法为event=event||window.event时会屏蔽ctrl+s失效。

假如要让所有IE版本能够屏蔽Ctrl+S,event取值只能是window.event了。由于window.event没有方法preventDefautl,所以屏蔽默认事件方法只能用return false;

兼容IE、firefox、chrome,屏蔽Ctrl+s的写法为

document.onkeydown=function (e) {
       e=window.event||e;
       if(key== 83 && e.ctrlKey){
          /*延迟,兼容FF浏览器 */
          setTimeout(function(){
           alert('www.qdxw.net');
          },1);
          return false;   
        }  
      };

屏蔽鼠标右键的写法

window.document.oncontextmenu = function (){
   alert('亲,你想干嘛,不要做坏事哦');
   return false;
 }

如果当前页面里含有iframe 那么iframe里的右键依然可用

屏蔽页面里iframe里的右键写法

document.getElementById('web').onload = function(){
  window.document.getElementById('web').contentWindow.document.oncontextmenu = function(){
    alert('www.qdxw.net');
    return false;
    } 
}

web是iframe标签的ID属性。

Javascript 相关文章推荐
善用事件代理,警惕闭包的性能陷阱。
Jan 20 Javascript
解决json日期格式问题的3种方法
Feb 02 Javascript
基于编写jQuery的无缝滚动插件
Aug 02 Javascript
关于js里的this关键字的理解
Aug 17 Javascript
JS+CSS实现精美的二级导航效果代码
Sep 17 Javascript
bootstrap datepicker限定可选时间范围实现方法
Sep 28 Javascript
jquery中绑定事件的异同
Feb 28 Javascript
jQuery plugin animsition使用小结
Sep 14 jQuery
微信小程序自定义组件实现tabs选项卡功能
Jul 14 Javascript
JavaScript原型对象、构造函数和实例对象功能与用法详解
Aug 04 Javascript
vue动态合并单元格并添加小计合计功能示例
Nov 26 Vue.js
微信小程序input抖动问题的修复方法
Mar 03 Javascript
JS禁用右键、禁用Ctrl+u、禁用Ctrl+s、禁用F12的实现代码
Dec 01 #Javascript
在Vue里如何把网页的数据导出到Excel的方法
Sep 30 #Javascript
jQuery实现二级导航菜单的示例
Sep 30 #jQuery
javascript canvas封装动态时钟
Sep 30 #Javascript
VUE Elemen-ui之穿梭框使用方法详解
Jan 19 #Javascript
Vue实现穿梭框效果
Sep 30 #Javascript
原生js实现表格翻页和跳转
Sep 29 #Javascript
You might like
LotusPhp笔记之:Cookie组件的使用详解
2013/05/06 PHP
ThinkPHP的cookie和session冲突造成Cookie不能使用的解决方法
2014/07/01 PHP
PHP实现简易blog的制作
2016/10/24 PHP
THinkPHP获取客户端IP与IP地址查询的方法
2016/11/14 PHP
php微信开发之百度天气预报
2016/11/18 PHP
初学JavaScript_03(ExtJs Grid的简单使用)
2008/10/02 Javascript
网页图片延时加载的js代码
2010/04/22 Javascript
javascript中的缓动效果实现程序
2012/12/29 Javascript
JS使用getComputedStyle()方法获取CSS属性值
2014/04/23 Javascript
从JQuery源码分析JavaScript函数的apply方法与call方法
2014/09/25 Javascript
用javascript实现自动输出网页文本
2015/07/30 Javascript
ionic隐藏tabs的方法
2016/08/29 Javascript
javascript使用 concat 方法对数组进行合并的方法
2016/09/08 Javascript
javascript ASCII和Hex互转的实现方法
2016/12/27 Javascript
js的三种继承方式详解
2017/01/21 Javascript
通过示例彻底搞懂js闭包
2017/08/10 Javascript
使用Typescript和ES模块发布Node模块的方法
2020/05/25 Javascript
[02:43]DOTA2亚洲邀请赛场馆攻略——带你走进东方体育中心
2018/03/19 DOTA
几个提升Python运行效率的方法之间的对比
2015/04/03 Python
用实例解释Python中的继承和多态的概念
2015/04/27 Python
python绘制条形图方法代码详解
2017/12/19 Python
Python如何实现线程间通信
2020/07/30 Python
python使用多线程查询数据库的实现示例
2020/08/17 Python
解决CSS3 transition-delay 属性默认值0不带单位失效的问题
2020/10/29 HTML / CSS
Hudson Jeans官网:高级精制牛仔裤
2018/11/28 全球购物
eBay比利时购物网站:eBay.be
2019/08/09 全球购物
酒店总经理欢迎词
2014/01/08 职场文书
经典婚礼主持开场白
2014/03/13 职场文书
银行服务明星推荐材料
2014/05/29 职场文书
国际贸易毕业生自荐书
2014/06/22 职场文书
家庭贫困证明书(3篇)
2014/09/15 职场文书
社区青年志愿者活动总结
2015/05/06 职场文书
2019升学宴主持词范本5篇
2019/10/09 职场文书
python实现三次密码验证的示例
2021/04/29 Python
pandas中对文本类型数据的处理小结
2021/11/01 Python
Vue2.0搭建脚手架
2022/03/13 Vue.js