JS应用之禁止抓屏、复制、打印


Posted in Javascript onFebruary 21, 2008

项目需要禁止抓屏、复制、打印的要求,复制、打印做起来可能顺手一点网上各种各样的脚本俯首皆是。但抓屏怎么禁止?PrintScreen是一个特殊的键,它是没有keyCode的键,所以onkeydown变得毫无用处。不过换一种思路的话可会更好,我们从粘贴板着手采取曲线救国策略。代码如下:
<script language="javascript">
window.setInterval("clipboardData.setData('text','')",100);
</script>
以上代码是每100毫秒清空一次粘贴板操作。当页面加载时脚本程序就开始自动执行。但这样有个弊端,不管网页被最小化还是怎么的只要这个窗口开着我们电脑所有的复制操作都无法进行(脚本一直在清空粘贴板),从某种意义上讲是达到预期效果了,但有些欠佳:(。

我们知道所有的控件都有onfocus和onblur事件,window窗口也不例外。我们通过利用这两个事件,只有在当前窗口处于活动状态时才执行清空操作,否则停止执行。代码如下:
    <script language="javascript">
var interval
window.onfocus=function(){interval=window.setInterval("clipboardData.setData('text','')",100);}
window.onblur=function(){window.clearInterval(interval);}
    </script>
这样就可以完美的解决这个问题。但对于不将截屏内容放入粘贴板的截屏程序来说此方法还是心有余而力不足的。
最新测试实践发现使用onfocus和onblur事件的方法也不尽如人意,当焦点指向程序页面内其他控件(即使Table)时,window将失去焦点从而触发onblur事件停止执行清空粘贴板命令,难道需要遍历所有控件为其onfocus和onblur绑定事件?有些迷茫与失望。
另window.onfocus只是document的onfocus,如果焦点在地址栏或菜单之类的地方onfocus也将失效。
仅以此文字记录自己半天时间研究JS的心得。

禁止打印只需将如果下样式代码放入程序即可(打印出的页面内容将为空白):
<style>@media print{body{display:none}}</style>

禁止复制、选择、右键菜单:
<script language=javascript>
function click() {
return false;}
function click1(){if (event.button==2) {return false; }}
function CtrlKeyDown(){
 if (event.keyCode==67&&event.ctrlKey)
 {
  clipboardData.setData('text','');
  return false; 
 }
}
document.onkeydown=CtrlKeyDown;
document.onselectstart=click;
document.onmousedown=click1;
</script>
<noscript><iframe src=*.html></iframe></noscript>
<script language=javascript> 
<!-- 
if (window.Event) 
document.captureEvents(Event.MOUSEUP); 
function nocontextmenu(){ 
 event.cancelBubble = true 
 event.returnValue = false; 
 return false; 

function norightclick(e){ 
if (window.Event){
 if (e.which == 2 || e.which == 3)
 return false;

else if (event.button == 2 || event.button == 3)
{
 event.cancelBubble = true;
 event.returnValue = false;return false;} 

document.oncontextmenu = nocontextmenu; // for IE5+ 
document.onmousedown = norightclick; // for all others 
//--></script>

以上代码在IE6.0环境运行正常。

Javascript 相关文章推荐
js no-repeat写法 背景不重复
Mar 18 Javascript
node.js中的fs.readFile方法使用说明
Dec 15 Javascript
React Router基础使用
Jan 17 Javascript
jquery 实时监听输入框值变化的完美方法(必看)
Jan 26 Javascript
js实现文字无缝向上滚动
Feb 16 Javascript
微信小程序之数据双向绑定与数据操作
May 12 Javascript
微信小程序开发之实现自定义Toast弹框
Jun 08 Javascript
详解Angular4中路由Router类的跳转navigate
Jun 09 Javascript
解决angularjs WdatePicker ng-model的问题
Sep 13 Javascript
详解可以用在VS Code中的正则表达式小技巧
May 14 Javascript
Element Tooltip 文字提示的使用示例
Jul 26 Javascript
Vue + iView实现Excel上传功能的完整代码
Jun 22 Vue.js
js 调整select 位置的函数
Feb 21 #Javascript
js 替换
Feb 19 #Javascript
javascript replace方法与正则表达式
Feb 19 #Javascript
window.addeventjs事件驱动函数集合addEvent等
Feb 19 #Javascript
setAttribute 与 class冲突解决
Feb 17 #Javascript
setInterval 和 setTimeout会产生内存溢出
Feb 15 #Javascript
一个js封装的不错的选项卡效果代码
Feb 15 #Javascript
You might like
Function eregi is deprecated (解决方法)
2013/06/21 PHP
php输出echo、print、print_r、printf、sprintf、var_dump的区别比较
2013/06/21 PHP
php多种形式发送邮件(mail qmail邮件系统 phpmailer类)
2014/01/22 PHP
PHP实用函数分享之去除多余的0
2015/02/06 PHP
Javascript 事件流和事件绑定
2009/07/16 Javascript
javascript instanceof 与typeof使用说明
2010/01/11 Javascript
jQuery结合PHP+MySQL实现二级联动下拉列表[实例]
2011/11/15 Javascript
在子窗口中关闭父窗口的一句代码
2013/10/21 Javascript
JavaScript中获取样式的原生方法小结
2014/10/08 Javascript
Node.js事件循环(Event Loop)和线程池详解
2015/01/28 Javascript
js拆分字符串并将分割的数据放到数组中的方法
2015/05/06 Javascript
jQuery实现标题有打字效果的焦点图代码
2015/11/16 Javascript
微信小程序注册60s倒计时功能 使用JS实现注册60s倒计时功能
2017/08/16 Javascript
微信小程序实现顶部选项卡(swiper)
2020/06/19 Javascript
Vue-cli 使用json server在本地模拟请求数据的示例代码
2017/11/02 Javascript
微信小程序实现tab和swiper切换结合效果
2020/07/17 Javascript
基于Vue、Vuex、Vue-router实现的购物商城(原生切换动画)效果
2018/01/09 Javascript
JavaScript 对引擎、运行时、调用堆栈的概述理解
2018/10/22 Javascript
vue+django实现一对一聊天功能的实例代码
2019/07/17 Javascript
9个JavaScript日常开发小技巧
2020/10/06 Javascript
[42:20]2014 DOTA2华西杯精英邀请赛5 24 DK VS NewBee
2014/05/25 DOTA
[47:10]完美世界DOTA2联赛PWL S3 LBZS vs Rebirth 第二场 12.16
2020/12/18 DOTA
[47:43]完美世界DOTA2联赛PWL S3 Magama vs GXR 第二场 12.19
2020/12/24 DOTA
Python实现检测服务器是否可以ping通的2种方法
2015/01/01 Python
Python 搭建Web站点之Web服务器与Web框架
2016/11/06 Python
浅析Python语言自带的数据结构有哪些
2019/08/27 Python
python进程间通信Queue工作过程详解
2019/11/01 Python
python GUI库图形界面开发之pyinstaller打包python程序为exe安装文件
2020/02/26 Python
CSS3 mask 遮罩的具体使用方法
2017/11/03 HTML / CSS
基于HTML5陀螺仪实现ofo首页眼睛移动效果的示例
2017/07/31 HTML / CSS
PHP面试题集
2016/12/18 面试题
SQL里面IN比较快还是EXISTS比较快
2012/07/19 面试题
《诚实与信任》教学反思
2014/04/10 职场文书
校本教研活动总结
2014/07/01 职场文书
护士长2014年度工作总结
2014/11/11 职场文书
安全检查汇报材料
2014/12/26 职场文书