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 返回时间戳所对应的具体时间
Jul 20 Javascript
jQuery实现点击标题输入详细信息
Apr 16 Javascript
用unescape反编码得出汉字示例
Apr 24 Javascript
jquery.hotkeys监听键盘按下事件keydown插件
May 11 Javascript
JavaScript数据结构和算法之二叉树详解
Feb 11 Javascript
jQuery实现下拉加载功能实例代码
Apr 01 Javascript
JavaScript中的ParseInt(&quot;08&quot;)和“09”返回0的原因分析及解决办法
May 19 Javascript
js提交form表单,并传递参数的实现方法
May 25 Javascript
几种tab切换详解
Feb 03 Javascript
微信小程序本地存储实现每日签到、连续签到功能
Oct 09 Javascript
vue请求数据的三种方式
Mar 04 Javascript
js删除对象中的某一个字段的方法实现
Jan 11 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初学者写及时补给skype用户充话费的小程序
2008/11/02 PHP
简单实现php上传文件功能
2017/09/21 PHP
jQuery 位置插件
2008/12/25 Javascript
JavaScript入门教程(3) js面向对象
2009/01/31 Javascript
基于jquery的一个OutlookBar类,动态创建导航条
2010/11/19 Javascript
Javascript 异步加载详解(浏览器在javascript的加载方式)
2012/05/20 Javascript
Jquery post传递数组方法实现思路及代码
2013/04/28 Javascript
js操纵dom生成下拉列表框的方法
2014/02/24 Javascript
Node.js中的流(Stream)介绍
2015/03/30 Javascript
js判断手机号运营商的方法
2015/10/23 Javascript
jquery实现定时自动轮播特效
2015/12/10 Javascript
CascadeView级联组件实现思路详解(分离思想和单链表)
2016/04/12 Javascript
深入理解逻辑表达式的用法 与或非的用法
2016/06/06 Javascript
深入浅析JS的数组遍历方法(推荐)
2016/06/15 Javascript
用jQuery向div中添加Html文本内容的简单实现
2016/07/13 Javascript
Vue路由跳转问题记录详解
2017/06/15 Javascript
解决canvas画布使用fillRect()时高度出现双倍效果的问题
2017/08/03 Javascript
Angular2.0/4.0 使用Echarts图表的示例代码
2017/12/07 Javascript
Element-ui tree组件自定义节点使用方法代码详解
2018/09/17 Javascript
微信小程序自定义底部导航带跳转功能
2018/11/27 Javascript
vue中axios防止多次触发终止多次请求的示例代码(防抖)
2020/02/16 Javascript
使用vue构建多页面应用的示例
2020/10/22 Javascript
Python面向对象程序设计多继承和多态用法示例
2019/04/08 Python
解决tensorflow训练时内存持续增加并占满的问题
2020/01/19 Python
python 实现字符串下标的输出功能
2020/02/13 Python
简单了解Java Netty Reactor三种线程模型
2020/04/26 Python
python进度条显示之tqmd模块
2020/08/22 Python
Nili Lotan官网:Nili Lotan同名品牌
2018/01/07 全球购物
Michael Kors澳大利亚官网:世界知名的奢侈饰品和成衣设计师
2020/02/13 全球购物
美国一站式电动和手动工具商店:International Tool
2020/11/26 全球购物
某某同志考察材料
2014/05/28 职场文书
小学兴趣小组活动总结
2014/07/07 职场文书
销售人才自我评价范文
2014/09/27 职场文书
优秀教师事迹材料
2014/12/15 职场文书
2015年员工工作表现评语
2015/03/25 职场文书
html5调用摄像头截图功能
2022/01/18 Javascript