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 相关文章推荐
jquery隐藏标签和显示标签的实例
Nov 11 Javascript
一个简单的JS时间控件示例代码(JS时分秒时间控件)
Nov 22 Javascript
js实现弹窗插件功能实例代码分享
Dec 12 Javascript
JavaScript中exec函数用法实例分析
Jun 08 Javascript
详解js静态资源文件请求的处理
Aug 01 Javascript
webpack 打包压缩js和css的方法示例
Mar 20 Javascript
vue2过滤器模糊查询方法
Sep 16 Javascript
Vue.js 父子组件通信的十种方式
Oct 30 Javascript
微信小程序websocket聊天室的实现示例代码
Feb 12 Javascript
vue实现局部刷新的实现示例
Apr 16 Javascript
javascript面向对象三大特征之封装实例详解
Jul 24 Javascript
如何区分vue中的v-show 与 v-if
Sep 08 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
天津市收音机工业发展史
2021/03/04 无线电
PHP4实际应用经验篇(9)
2006/10/09 PHP
Laravel中使用FormRequest进行表单验证方法及问题汇总
2016/06/19 PHP
PHP设置images目录不充许http访问的方法
2016/11/01 PHP
CI框架封装的常用图像处理方法(缩略图,水印,旋转,上传等)
2016/11/22 PHP
PHP基于mcript扩展实现对称加密功能示例
2019/02/21 PHP
JavaScript delete操作符应用实例
2009/01/13 Javascript
js中的window.open返回object的错误的解决方法
2009/08/15 Javascript
自制轻量级仿jQuery.boxy对话框插件代码
2010/10/26 Javascript
JS代码优化技巧之通俗版(减少js体积)
2011/12/23 Javascript
jQuery去掉字符串起始和结尾的空格(多种方法实现)
2013/04/01 Javascript
JavaScript使用push方法添加一个元素到数组末尾用法实例
2015/04/06 Javascript
JQuery点击行tr实现checkBox选中的简单实例
2016/05/26 Javascript
javascript数字验证的实例代码(推荐)
2016/08/20 Javascript
浅谈JS函数定义方式的区别
2016/10/30 Javascript
json2.js 入门教程之使用方法与实例分析
2017/09/14 Javascript
Vue 动态路由的实现及 Springsecurity 按钮级别的权限控制
2019/09/05 Javascript
Element的el-tree控件后台数据结构的生成以及方法的抽取
2020/03/05 Javascript
Vue3 的响应式和以前有什么区别,Proxy 无敌?
2020/05/20 Javascript
[27:08]完美世界DOTA2联赛PWL S2 SZ vs Rebirth 第二场 11.21
2020/11/23 DOTA
如何用itertools解决无序排列组合的问题
2017/05/18 Python
Python批量提取PDF文件中文本的脚本
2018/03/14 Python
Python实现的端口扫描功能示例
2018/04/08 Python
Python中栈、队列与优先级队列的实现方法
2019/06/30 Python
使用pycharm和pylint检查python代码规范操作
2020/06/09 Python
纯css3实现的鼠标悬停动画按钮
2014/12/23 HTML / CSS
纯HTML5+CSS3制作生日蛋糕代码
2016/11/16 HTML / CSS
简历的自我评价
2014/02/03 职场文书
农村婚庆司仪主持词
2014/03/15 职场文书
《花木兰》教学反思
2014/04/09 职场文书
小学领导班子对照材料
2014/08/23 职场文书
2014年销售内勤工作总结
2014/12/01 职场文书
会计求职自荐信
2015/03/26 职场文书
《珍珠鸟》教学反思
2016/02/16 职场文书
Nginx服务器添加Systemd自定义服务过程解析
2021/03/31 Servers
python如何进行基准测试
2021/04/26 Python