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 相关文章推荐
jquery 3D球状导航的文章分类
Jul 06 Javascript
基于jquery实现的可以编辑选择的下拉框的代码
Nov 19 Javascript
快速查找数组中的某个元素并返回下标示例
Sep 03 Javascript
jQuery使用cookie与json简单实现购物车功能
Apr 15 Javascript
基于JS+Canves实现点击按钮水波纹效果
Sep 15 Javascript
AngularJS 中使用Swiper制作滚动图不能滑动的解决方法
Nov 15 Javascript
JS获得多个同name 的input输入框的值的实现方法
Jan 09 Javascript
js实现做通讯录的索引滑动显示效果和滑动显示锚点效果
Feb 18 Javascript
利用JS对iframe父子(内外)页面进行操作的方法教程
Jun 15 Javascript
Cropper.js 实现裁剪图片并上传(PC端)
Aug 20 Javascript
深入理解ES6之数据解构的用法
Jan 13 Javascript
微信小程序引入Vant组件库过程解析
Aug 06 Javascript
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
第十二节 类的自动加载 [12]
2006/10/09 PHP
一个简单的php加密解密函数(动态加密)
2013/06/19 PHP
跟我学Laravel之快速入门
2014/10/15 PHP
PHP调用Linux命令权限不足问题解决方法
2015/02/07 PHP
thinkphp微信开发(消息加密解密)
2015/12/02 PHP
详谈php静态方法及普通方法的区别
2016/10/04 PHP
Extjs4 GridPanel的主要配置参数详细介绍
2013/04/18 Javascript
js 绑定键盘鼠标事件示例代码
2014/02/12 Javascript
JavaScript中Function()函数的使用教程
2015/06/04 Javascript
Bootstrap表单布局样式代码
2016/05/31 Javascript
Javascript之Number对象介绍
2016/06/07 Javascript
漂亮! js实现颜色渐变效果
2016/08/12 Javascript
基于JS实现仿京东搜索栏随滑动透明度渐变效果
2017/07/10 Javascript
浅谈vux之x-input使用以及源码解读
2018/11/04 Javascript
vue+iview动态渲染表格详解
2019/03/19 Javascript
vue实现固定位置显示功能
2019/05/30 Javascript
解决vue-cli webpack打包开启Gzip 报错问题
2019/07/24 Javascript
你知道JavaScript Symbol类型怎么用吗
2020/01/08 Javascript
Python中异常重试的解决方案详解
2017/05/05 Python
python给微信好友定时推送消息的示例
2019/02/20 Python
Python中的支持向量机SVM的使用(附实例代码)
2019/06/26 Python
Python面向对象封装操作案例详解 II
2020/01/02 Python
新手学习Python2和Python3中print不同的用法
2020/06/09 Python
Python之字典对象的几种创建方法
2020/09/30 Python
python中用ggplot绘制画图实例讲解
2021/01/26 Python
HTML5学习笔记之History API
2015/02/26 HTML / CSS
英国美发和美容产品商城:HQhair
2019/02/08 全球购物
会计学财务管理专业个人的自我评价
2013/10/19 职场文书
2014小学植树节活动总结
2014/03/10 职场文书
健康教育评估方案
2014/05/25 职场文书
企业年检委托书范本
2014/10/14 职场文书
张丽莉事迹观后感
2015/06/16 职场文书
2016年法制宣传月活动总结
2016/04/01 职场文书
2019员工保密协议书(3篇)
2019/09/23 职场文书
一起来看看Vue的核心原理剖析
2022/03/24 Vue.js
Oracle中日期的使用方法实例
2022/07/07 Oracle