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 相关文章推荐
js 鼠标拖动对象 可让任何div实现拖动效果
Nov 09 Javascript
jQuery 表格插件整理
Apr 27 Javascript
浅析jQuery1.8的几个小变化
Dec 10 Javascript
node.js中的fs.lchmod方法使用说明
Dec 16 Javascript
JS实现密码框根据焦点的获取与失去控制文字的消失与显示效果
Nov 26 Javascript
深入理解vue.js双向绑定的实现原理
Dec 05 Javascript
解决jQuery ajax动态新增节点无法触发点击事件的问题
May 24 jQuery
微信小程序实现皮肤功能(夜间模式)
Jun 18 Javascript
vue.js内部自定义指令与全局自定义指令的实现详解(利用directive)
Jul 11 Javascript
angularjs 页面自适应高度的方法
Jan 17 Javascript
JavaScript实现微信红包算法及问题解决方法
Apr 26 Javascript
详解vue移动端项目的适配(以mint-ui为例)
Aug 17 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实现批量下载百度云盘文件例子分享
2014/04/10 PHP
php获取textarea的值并处理回车换行的方法
2014/10/20 PHP
PHP数组相加操作及与array_merge的区别浅析
2016/11/26 PHP
PHP实现生成推广海报的方法详解
2018/03/14 PHP
网站被恶意镜像怎么办 php一段代码轻松搞定(全面版)
2018/10/23 PHP
Laravel timestamps 设置为unix时间戳的方法
2019/10/11 PHP
jQuery实现手机号码输入提示功能实例
2015/04/30 Javascript
JS实现仿腾讯微博无刷新删除微博效果代码
2015/10/16 Javascript
js返回顶部实例分享
2016/12/21 Javascript
详解Jquery EasyUI tree 的异步加载(遍历指定文件夹,根据文件夹内的文件生成tree)
2017/02/11 Javascript
JS中利用localStorage防止页面动态添加数据刷新后数据丢失
2017/03/10 Javascript
在Vue中如何使用Cookie操作实例
2017/07/27 Javascript
jQuery实现左右两个列表框的内容相互移动功能示例
2019/01/27 jQuery
详解nodejs http请求相关总结
2019/03/31 NodeJs
JS eval代码快速解密实例解析
2020/04/23 Javascript
Vue-cli打包后部署到子目录下的路径问题说明
2020/09/02 Javascript
[02:28]DOTA2 2015国际邀请赛中国区预选赛首日现场百态
2015/05/26 DOTA
python获取本地计算机名字的方法
2015/04/29 Python
探究Python中isalnum()方法的使用
2015/05/18 Python
Python中有趣在__call__函数
2015/06/21 Python
Python出现segfault错误解决方法
2016/04/16 Python
Python3编程实现获取阿里云ECS实例及监控的方法
2017/08/18 Python
对python中for、if、while的区别与比较方法
2018/06/25 Python
pyqt5 实现工具栏文字图片同时显示
2019/06/13 Python
Python+selenium点击网页上指定坐标的实例
2019/07/05 Python
快速解决Django关闭Debug模式无法加载media图片与static静态文件
2020/04/07 Python
Python建造者模式案例运行原理解析
2020/06/29 Python
CSS3中Animation动画属性用法详解
2016/07/04 HTML / CSS
Booking.com缤客中国:全球酒店在线预订网站
2020/05/03 全球购物
const和static readonly区别
2013/05/20 面试题
工作室成员个人发展规划范文
2014/01/24 职场文书
大学同学十年聚会感言
2014/02/21 职场文书
交通事故赔偿协议书
2014/10/16 职场文书
实习单位证明范例
2014/11/17 职场文书
日本读研:怎样写好一篇日本研究计划书?
2019/07/15 职场文书
Python竟然能剪辑视频
2021/05/25 Python