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 相关文章推荐
Fixie.js 自动填充内容的插件
Jun 28 Javascript
javascript实现复制与粘贴操作实例
Oct 16 Javascript
基于javascript实现浏览器滚动条快到底部时自动加载数据
Nov 30 Javascript
jQuery的Each比JS原生for循环性能慢很多的原因
Jul 05 Javascript
使用Vue自定义数字键盘组件(体验度极好)
Dec 19 Javascript
vue2中使用less简易教程
Mar 27 Javascript
echarts整合多个类似option的方法实例
Jul 10 Javascript
浅谈微信页面入口文件被缓存解决方案
Sep 29 Javascript
判断js数据类型的函数实例详解
May 23 Javascript
JS通用方法触发点击事件代码实例
Feb 17 Javascript
vue瀑布流组件实现上拉加载更多
Mar 10 Javascript
vue项目页面嵌入代码块vue-prism-editor的实现
Oct 30 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
PHP中英混合字符串截取函数代码
2011/07/17 PHP
PHP根据树的前序遍历和中序遍历构造树并输出后序遍历的方法
2017/11/10 PHP
php反序列化长度变化尾部字符串逃逸(0CTF-2016-piapiapia)
2020/02/15 PHP
JS JavaScript获取Url参数,src属性参数
2021/03/09 Javascript
javascript 页面划词搜索JS
2009/09/28 Javascript
JavaScript运行时库属性一览表
2014/03/14 Javascript
JavaScript插件化开发教程 (三)
2015/01/27 Javascript
JavaScript实现搜索框的自动完成功能(一)
2016/02/25 Javascript
AngularJS基于ngInfiniteScroll实现下拉滚动加载的方法
2016/12/14 Javascript
jQuery实现的鼠标滚轮控制图片缩放功能实例
2017/10/14 jQuery
jQuery.Sumoselect插件实现下拉复选框效果
2017/11/09 jQuery
angular4中*ngFor不能对返回来的对象进行循环的解决方法
2018/09/12 Javascript
trackingjs+websocket+百度人脸识别API实现人脸签到
2018/11/26 Javascript
浅析JavaScript异步代码优化
2019/03/18 Javascript
gulp构建小程序的方法步骤
2019/05/31 Javascript
JavaScript实现英语单词题库
2019/12/24 Javascript
Python 数据结构之旋转链表
2017/02/25 Python
python自定义异常实例详解
2017/07/11 Python
python3获取当前文件的上一级目录实例
2018/04/26 Python
Python向excel中写入数据的方法
2019/05/05 Python
Django框架中序列化和反序列化的例子
2019/08/06 Python
深入浅析Python代码规范性检测
2020/07/31 Python
详解Python中的文件操作
2021/01/14 Python
巴西宠物店在线:Geração Pet
2017/05/31 全球购物
马来西亚和新加坡巴士票在线预订:CatchThatBus
2018/11/17 全球购物
英国最大的在线床超市:Bed Star
2019/01/24 全球购物
行政经理的岗位职责
2013/11/23 职场文书
房屋委托书范本
2014/04/04 职场文书
食品安全责任书
2014/04/15 职场文书
联谊活动总结
2014/08/28 职场文书
小学感恩节活动策划方案
2014/10/06 职场文书
如何写贫困证明申请书
2014/10/29 职场文书
2015年幼儿园国庆节活动总结
2015/07/30 职场文书
HTML中table表格拆分合并(colspan、rowspan)
2021/04/07 HTML / CSS
redis实现的四种常见限流策略
2021/06/18 Redis
MySQL示例讲解数据库约束以及表的设计
2022/06/16 MySQL