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 相关文章推荐
Javascript倒计时代码
Aug 12 Javascript
精通Javascript系列之数据类型 字符串
Jun 08 Javascript
基于jQuery的图片剪切插件
Aug 03 Javascript
stream.js 一个很小、完全独立的Javascript类库
Oct 28 Javascript
jQuery.extend 函数详解
Feb 03 Javascript
JS常用字符串处理方法应用总结
May 22 Javascript
chrome浏览器当表单自动填充时如何去除浏览器自动添加的默认样式
Oct 09 Javascript
浅析Bootstrap表格的使用
Jun 23 Javascript
Bootstrap table右键功能实现方法
Feb 20 Javascript
bootstrap+jQuery 实现下拉菜单中复选框全选和全不选效果
Jun 12 jQuery
详解vue.js之props传递参数
Dec 12 Javascript
JS浅拷贝和深拷贝原理与实现方法分析
Feb 28 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
PHP中常用数组处理方法实例分析
2008/08/30 PHP
PHP curl_setopt()函数实例代码与参数分析
2011/06/02 PHP
PHP抓屏函数实现屏幕快照代码分享
2014/01/02 PHP
Jquery在IE7下无法使用 $.ajax解决方法
2009/11/11 Javascript
javascript 模拟点击广告
2010/01/02 Javascript
基于JQuery的日期联动实现代码
2011/02/24 Javascript
JS和JQ的event对象区别分析
2014/11/24 Javascript
2014年50个程序员最适用的免费JQuery插件
2014/12/15 Javascript
jQuery插件ajaxFileUpload实现异步上传文件效果
2015/04/14 Javascript
基于jQuery1.9版本如何判断浏览器版本类型
2016/01/12 Javascript
轻松实现jquery手风琴效果
2016/01/14 Javascript
纯JavaScript 实现flappy bird小游戏实例代码
2016/09/27 Javascript
Nodejs 搭建简单的Web服务器详解及实例
2016/11/30 NodeJs
微信小程序 picker 组件详解及简单实例
2017/01/10 Javascript
js判断手机系统是android还是ios
2017/03/07 Javascript
jQuery Ajax自定义分页组件(jquery.loehpagerv1.0)实例详解
2017/05/01 jQuery
vue使用element-ui的el-input监听不了回车事件的解决方法
2018/01/12 Javascript
vue 监听屏幕高度的实例
2018/09/05 Javascript
node中的密码安全(加密)
2018/09/17 Javascript
webpack+vue+express(hot)热启动调试简单配置方法
2018/09/19 Javascript
js实现图片实时时钟
2020/01/15 Javascript
超详细小程序定位地图模块全系列开发教学
2020/11/24 Javascript
Python中列表(list)操作方法汇总
2014/08/18 Python
分享一下如何编写高效且优雅的 Python 代码
2017/09/07 Python
python在线编译器的简单原理及简单实现代码
2018/02/02 Python
对python numpy.array插入一行或一列的方法详解
2019/01/29 Python
python的reverse函数翻转结果为None的问题
2020/05/11 Python
Python模拟伯努利试验和二项分布代码实例
2020/05/27 Python
Sentry错误日志监控使用方法解析
2020/11/12 Python
美国最受欢迎的度假租赁网站:VRBO
2016/08/02 全球购物
乐天旅游台湾网站:Rakuten Travel TW
2017/06/01 全球购物
英国最大的体育&时尚零售公司:JD Sports
2017/12/13 全球购物
Linux内核产生并发的原因
2012/07/13 面试题
大学生应聘导游自荐信
2014/06/02 职场文书
2015年电信员工工作总结
2015/05/26 职场文书
sql server删除前1000行数据的方法实例
2021/08/30 SQL Server