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 相关文章推荐
onmouseover和onmouseout的一些问题思考
Aug 14 Javascript
Javascript学习笔记之数组的遍历和 length 属性
Nov 23 Javascript
js图片卷帘门导航菜单特效代码分享
Sep 10 Javascript
Node.js项目中调用JavaScript的EJS模板库的方法
Mar 11 Javascript
AngularJS入门教程之迭代器过滤详解
Aug 18 Javascript
vue.js实现表格合并示例代码
Nov 30 Javascript
ThinkJS中如何使用MongoDB的CURD操作
Dec 13 Javascript
对称加密与非对称加密优缺点详解
Feb 06 Javascript
Express + Node.js实现登录拦截器的实例代码
Jul 01 Javascript
angular.js实现购物车功能
Oct 23 Javascript
layer实现关闭弹出层刷新父界面功能详解
Nov 15 Javascript
jQuery实现的下雪动画效果示例【附源码下载】
Feb 02 jQuery
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脚本的10个技巧(6)
2006/10/09 PHP
据说是雅虎的一份PHP面试题附答案
2009/01/07 PHP
php调用方法mssql_fetch_row、mssql_fetch_array、mssql_fetch_assoc和mssql_fetch_objcect读取数据的区别
2012/08/08 PHP
在wamp集成环境下升级php版本(实现方法)
2013/07/01 PHP
thinkPHP模板中for循环与switch语句用法示例
2016/11/30 PHP
laravel入门知识点整理
2020/09/15 PHP
对JavaScript的eval()中使用函数的进一步讨论
2008/07/26 Javascript
js DOM模型操作
2009/12/28 Javascript
js TextArea的选中区域处理
2010/12/28 Javascript
JQuery实现简单时尚快捷的气泡提示插件
2012/12/20 Javascript
jquery实现图片滚动效果的简单实例
2013/11/23 Javascript
JavaScript数字和字符串转换示例
2014/03/26 Javascript
详解JS面向对象编程
2016/01/24 Javascript
JS原型链怎么理解
2016/06/27 Javascript
select隐藏选中值对应的id,显示其它id的简单实现方法
2016/08/25 Javascript
在DWR中实现直接获取一个JAVA类的返回值的两种方法
2016/12/25 Javascript
Bootstrap 网格系统布局详解
2017/03/19 Javascript
AngularJS+Bootstrap3多级导航菜单的实现代码
2017/08/16 Javascript
vue项目中应用ueditor自定义上传按钮功能
2018/04/27 Javascript
用Node提供静态文件服务的方法
2018/07/06 Javascript
vue插件开发之使用pdf.js实现手机端在线预览pdf文档的方法
2018/07/12 Javascript
Vue瀑布流插件的使用示例
2018/09/19 Javascript
微信小程序实现获取准确的腾讯定位地址功能示例
2019/03/27 Javascript
python脚本实现数据导出excel格式的简单方法(推荐)
2016/12/30 Python
Python实现Mysql数据库连接池实例详解
2017/04/11 Python
python matplotlib画图库学习绘制常用的图
2019/03/19 Python
Python Celery多队列配置代码实例
2019/11/22 Python
opencv3/python 鼠标响应操作详解
2019/12/11 Python
Python建造者模式案例运行原理解析
2020/06/29 Python
常用的四种CSS透明属性介绍
2014/04/12 HTML / CSS
如何删除一个表里面的重复行
2013/07/13 面试题
《临死前的严监生》教学反思
2014/02/13 职场文书
施工安全责任书范本
2014/07/24 职场文书
pycharm 如何查看某一函数源码的快捷键
2021/05/12 Python
Java并发编程必备之Future机制
2021/06/30 Java/Android
一文带你探究MySQL中的NULL
2021/11/11 MySQL