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中如何设置readOnly的值
Dec 25 Javascript
JavaScript中的公有、私有、特权和静态成员用法分析
Nov 20 Javascript
JavaScript将字符串转换为整数的方法
Apr 14 Javascript
JS实现动态移动层及拖动浮层关闭的方法
Apr 30 Javascript
Javascript监视变量变化的方法
Jun 09 Javascript
纯JavaScript代码实现文本比较工具
Feb 17 Javascript
javascript瀑布流布局实现方法详解
Feb 17 Javascript
jQuery自适应轮播图插件Swiper用法示例
Aug 24 Javascript
json数据处理及数据绑定
Jan 25 Javascript
js鼠标经过tab选项卡时实现切换延迟
Mar 24 Javascript
JS实现页面内跳转的简单代码
Sep 03 Javascript
angularJS的radio实现单项二选一的使用方法
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
mac环境中使用brew安装php5.5.15
2014/08/18 PHP
CI框架常用方法小结
2016/05/17 PHP
php从身份证获取性别和出生年月
2017/02/09 PHP
redis+php实现微博(三)微博列表功能详解
2019/09/23 PHP
PHP实现创建一个RPC服务操作示例
2020/02/23 PHP
laravel框架使用FormRequest进行表单验证,验证异常返回JSON操作示例
2020/02/18 PHP
一个高效的JavaScript压缩工具下载集合
2007/03/06 Javascript
jQuery实战之品牌展示列表效果
2011/04/10 Javascript
巧用js提交表单轻松解决一个页面有多个提交按钮
2013/11/17 Javascript
js分页工具实例
2015/01/28 Javascript
深入分析javascript中console命令
2016/08/14 Javascript
jQuery制作全屏宽度固定高度轮播图(实例讲解)
2017/07/08 jQuery
require.js中的define函数详解
2017/07/10 Javascript
Angular弹出模态框的两种方式
2017/10/19 Javascript
vue 中 beforeRouteEnter 死循环的问题
2019/04/23 Javascript
Js参数RSA加密传输之jsencrypt.js的使用
2020/02/07 Javascript
jQuery实现二级导航菜单的示例
2020/09/30 jQuery
Vue看了就会的8个小技巧
2021/01/21 Vue.js
[02:16]DOTA2英雄基础教程 干扰者
2014/01/15 DOTA
Python插件virtualenv搭建虚拟环境
2017/11/20 Python
python3实现名片管理系统
2020/11/29 Python
详解Python对JSON中的特殊类型进行Encoder
2019/07/15 Python
基于Python爬取爱奇艺资源过程解析
2020/03/02 Python
opencv之颜色过滤只留下图片中的红色区域操作
2020/06/05 Python
深入浅析css3 中display box使用方法
2015/11/25 HTML / CSS
CSS3中Animation动画属性用法详解
2016/07/04 HTML / CSS
华为俄罗斯官方网上商城:购买Huawei手机和平板
2017/04/21 全球购物
澳洲女装时尚在线:Blue Bungalow
2018/05/05 全球购物
戴尔新加坡官网:Dell Singapore
2020/12/13 全球购物
Servlet的生命周期
2013/08/25 面试题
幼儿园小班见习报告
2014/10/31 职场文书
个人向公司借款协议书
2016/03/19 职场文书
ORACLE数据库对long类型字段进行模糊匹配的解决思路
2021/04/07 Oracle
Python 阶乘详解
2021/10/05 Python
Go语言基础map用法及示例详解
2021/11/17 Golang
用Python爬取英雄联盟的皮肤详细示例
2021/12/06 Python