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 相关文章推荐
Jquery1.9.1源码分析系列(六)延时对象应用之jQuery.ready
Nov 24 Javascript
jQuery学习笔记之回调函数
Aug 15 Javascript
Vue.js学习之计算属性
Jan 22 Javascript
基于vuejs实现一个todolist项目
Apr 11 Javascript
微信小程序实现tab切换效果
Nov 21 Javascript
vue中Npm run build 根据环境传递参数方法来打包不同域名
Mar 29 Javascript
基于JavaScript canvas绘制贝塞尔曲线
Dec 25 Javascript
Vue.js实现备忘录功能
Jun 26 Javascript
Node.js之删除文件夹(含递归删除)代码实例
Sep 09 Javascript
原生js实现二级联动菜单
Nov 27 Javascript
解决echarts vue数据更新,视图不更新问题(echarts嵌在vue弹框中)
Jul 20 Javascript
node.js使用express-fileupload中间件实现文件上传
Jul 16 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中的count函数
2016/05/31 PHP
PHP编辑器PhpStrom运行缓慢问题
2017/02/21 PHP
如何用PHP做到页面注册审核
2017/03/02 PHP
用javascript实现分割提取页面所需内容
2007/05/09 Javascript
让IE8支持DOM 2(不用框架!)
2009/12/31 Javascript
javaScript事件机制兼容【详细整理】
2016/07/23 Javascript
Actionscript与javascript交互实例程序(修改)
2016/09/22 Javascript
如何解决hover在ie6中的兼容性问题
2016/12/15 Javascript
JS正则截取两个字符串之间及字符串前后内容的方法
2017/01/06 Javascript
微信小程序-拍照或选择图片并上传文件
2017/01/06 Javascript
详解win7 cmd执行vue不是内部命令的解决方法
2017/07/27 Javascript
Layui table 组件的使用之初始化加载数据、数据刷新表格、传参数
2017/09/11 Javascript
jQuery选择器之属性筛选选择器用法详解
2017/09/19 jQuery
详解Vue路由History mode模式中页面无法渲染的原因及解决
2017/09/28 Javascript
gulp安装以及打包合并的方法教程
2017/11/19 Javascript
nodejs超出最大的调用栈错误问题
2017/12/27 NodeJs
Vue2.0系列之过滤器的使用
2018/03/01 Javascript
js实现无限层级树形数据结构(创新算法)
2020/02/27 Javascript
python读写ini文件示例(python读写文件)
2014/03/25 Python
python类的继承实例详解
2017/03/30 Python
Python向MySQL批量插数据的实例讲解
2018/03/31 Python
面向初学者的Python编辑器Mu
2018/10/08 Python
PyQt 图解Qt Designer工具的使用方法
2019/08/06 Python
python django生成迁移文件的实例
2019/08/31 Python
构建高效的python requests长连接池详解
2020/05/02 Python
Python中过滤字符串列表的方法
2020/12/22 Python
美国老牌主机服务商:iPage
2016/07/22 全球购物
Myholidays美国:在线旅游网站
2019/08/16 全球购物
英国领先的电动可调床制造商:Laybrook
2019/12/26 全球购物
中式餐厅创业计划书范文
2014/01/23 职场文书
学校安全检查制度
2014/01/27 职场文书
啤酒节策划方案
2014/05/28 职场文书
2014年大学生工作总结
2014/11/20 职场文书
撤诉状格式范本
2015/05/19 职场文书
Python中异常处理用法
2021/11/27 Python
详解MySQL中timestamp和datetime时区问题导致做DTS遇到的坑
2021/12/06 MySQL