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插件 cluetip 关键词注释
Jan 12 Javascript
jquery读写cookie操作实例分析
Dec 24 Javascript
20分钟成功编写bootstrap响应式页面 就这么简单
May 12 Javascript
浅谈js中几种实用的跨域方法原理详解
Dec 02 Javascript
微信小程序 弹窗自定义实例代码
Mar 08 Javascript
vue2.0实战之使用vue-cli搭建项目(2)
Mar 27 Javascript
浅析JS抽象工厂模式
Dec 14 Javascript
微信小程序中的canvas 文字断行和省略号显示功能的处理方法
Nov 14 Javascript
JavaScript实现连连看连线算法
Jan 05 Javascript
微信小程序入口场景的问题集合与相关解决方法
Jun 26 Javascript
微信小程序开发数据缓存基础知识辨析及运用实例详解
Nov 06 Javascript
JavaScript实现外溢动态爱心的效果的示例代码
Mar 21 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
在WIN98下以apache模块方式安装php
2006/10/09 PHP
PHP5 面向对象程序设计
2008/02/13 PHP
PHP 基本语法格式
2009/12/15 PHP
比file_get_contents稳定的curl_get_contents分享
2012/01/11 PHP
Zend Studio去除编辑器的语法警告设置方法
2012/10/24 PHP
php获取ajax的headers方法与内容实例
2017/12/27 PHP
TP5框架实现自定义分页样式的方法示例
2020/04/05 PHP
Laravel框架源码解析之入口文件原理分析
2020/05/14 PHP
javascript[js]获取url参数的代码
2007/10/17 Javascript
javascript 隐藏/显示指定的区域附HTML元素【legend】用法
2010/03/05 Javascript
Web跨浏览器进程通信(Web跨域)
2013/04/17 Javascript
自己使用js/jquery写的一个定制对话框控件
2014/05/02 Javascript
推荐10 款 SVG 动画的 JavaScript 库
2015/03/24 Javascript
JavaScript DOM节点操作实例小结(新建,删除HTML元素)
2017/01/19 Javascript
JS实现线性表的顺序表示方法示例【经典数据结构】
2017/04/11 Javascript
Node.js使用gm拼装sprite图片
2017/07/04 Javascript
前端必备插件之纯原生JS的瀑布流插件Macy.js
2017/11/22 Javascript
ckeditor一键排版功能实现方法分析
2020/02/06 Javascript
Python读取ini文件、操作mysql、发送邮件实例
2015/01/01 Python
Python中解析JSON并同时进行自定义编码处理实例
2015/02/08 Python
Python批量查询域名是否被注册过
2017/06/21 Python
Python排序搜索基本算法之插入排序实例分析
2017/12/11 Python
基于Django与ajax之间的json传输方法
2018/05/29 Python
Python中的取模运算方法
2018/11/10 Python
python读取xlsx的方法
2018/12/25 Python
基于Python实现船舶的MMSI的获取(推荐)
2019/10/21 Python
将相和教学反思
2014/02/04 职场文书
物理教学随笔感言
2014/02/22 职场文书
教育技术学专业职业规划书
2014/03/03 职场文书
广告词串烧
2014/03/19 职场文书
杭白菊导游词
2015/02/10 职场文书
民主评议教师党员自我评价
2015/03/04 职场文书
大学生自荐书范文
2015/03/05 职场文书
销售区域经理岗位职责
2015/04/10 职场文书
《有余数的除法》教学反思
2016/02/22 职场文书
Pytorch GPU内存占用很高,但是利用率很低如何解决
2021/06/01 Python