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 Ajax 全解析
Feb 08 Javascript
JavaScript 克隆数组最简单的方法
Feb 12 Javascript
用最通俗易懂的代码帮助新手理解javascript闭包 推荐
Mar 01 Javascript
基于dom编程中 动态创建与删除元素的使用
Apr 17 Javascript
JS实现的网页背景闪电闪烁效果代码
Oct 17 Javascript
JavaScript 数组- Array的方法总结(推荐)
Jul 21 Javascript
微信小程序实战之轮播图(3)
Apr 17 Javascript
JS字符串去除连续或全部重复字符的实例
Mar 08 Javascript
vue 的点击事件获取当前点击的元素方法
Sep 15 Javascript
jQuery实现高级检索功能
May 28 jQuery
微信小程序左右滚动公告栏效果代码实例
Sep 16 Javascript
解决vue项目中遇到 Cannot find module ‘chalk‘ 报错的问题
Nov 05 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原理之变量分离/引用(Variables Separation)
2013/08/09 PHP
PHP实现的网站目录扫描索引工具
2016/09/08 PHP
JS面向对象、prototype、call()、apply()
2009/05/14 Javascript
仅IE6/7/8中innerHTML返回值忽略英文空格的问题
2011/04/07 Javascript
检测jQuery.js是否已加载的判断代码
2011/05/20 Javascript
jQuery 遍历- 关于closest() 的方法介绍以及与parents()的方法区别分析
2013/04/26 Javascript
jquery easyui combox一些实用的小方法
2013/12/25 Javascript
Javascript实现多彩雪花从天降散落效果的方法
2015/02/02 Javascript
浅析jQuery事件之on()方法绑定多个选择器,多个事件
2016/04/27 Javascript
深入浅析JavaScript中with语句的理解
2016/05/12 Javascript
JavaScript中获取时间的函数集
2016/08/16 Javascript
Mongoose实现虚拟字段查询的方法详解
2017/08/15 Javascript
JavaScript门面模式详解
2017/10/19 Javascript
vue 指定组件缓存实例详解
2018/04/01 Javascript
angular第三方包开发整理(小结)
2018/04/19 Javascript
Vue中用props给data赋初始值遇到的问题解决
2018/11/27 Javascript
vue 实现特定条件下绑定事件
2019/11/09 Javascript
JS中数组实现代码(倒序遍历数组,数组连接字符串)
2019/12/29 Javascript
JS apply用法总结和使用场景实例分析
2020/03/14 Javascript
[48:39]Ti4主赛事胜者组第一天 EG vs NEWBEE 2
2014/07/19 DOTA
[51:07]VGJ.S vs Pain 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/20 DOTA
Python实现递归遍历文件夹并删除文件
2016/04/18 Python
python timestamp和datetime之间转换详解
2017/12/11 Python
Python json模块dumps、loads操作示例
2018/09/06 Python
python实现复制大量文件功能
2019/08/31 Python
pytorch: Parameter 的数据结构实例
2019/12/31 Python
Python类的动态绑定实现原理
2020/03/21 Python
HMV日本官网:全球知名的音乐、DVD和电脑游戏零售巨头
2016/08/13 全球购物
贝斯特韦斯特酒店集团官网:Best Western
2019/01/03 全球购物
活动邀请函范文
2014/01/19 职场文书
运动会稿件300字
2014/02/14 职场文书
2014年教师思想工作总结
2014/12/03 职场文书
SQL Server作业失败:无法确定所有者是否有服务器访问权限的解决方法
2021/06/30 SQL Server
Python必备技巧之字符数据操作详解
2022/03/23 Python
PYTHON 使用 Pandas 删除某列指定值所在的行
2022/04/28 Python
详解Python中的for循环
2022/04/30 Python