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 相关文章推荐
window.requestAnimationFrame是什么意思,怎么用
Jan 13 Javascript
JS实现字体选色板实例代码
Nov 20 Javascript
js中AppendChild与insertBefore的用法详细解析
Dec 16 Javascript
jQuery模拟点击A标记示例参考
Apr 17 Javascript
javascript框架设计读书笔记之数组的扩展与修复
Dec 02 Javascript
浅谈Javascript数组索引
Jul 29 Javascript
jQuery前端开发35个小技巧
May 24 Javascript
jQuery学习笔记——jqGrid的使用记录(实现分页、搜索功能)
Nov 09 Javascript
JQuery实现table中tr上移下移的示例(超简单)
Jan 08 jQuery
微信小程序使用map组件实现解析经纬度功能示例
Jan 22 Javascript
解决微信小程序中转换时间格式IOS不兼容的问题
Feb 15 Javascript
解决vue打包 npm run build-test突然不动了的问题
Nov 13 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导入导出excel实例
2013/10/25 PHP
php文字水印和php图片水印实现代码(二种加水印方法)
2013/12/25 PHP
PHP读取文件内容后清空文件示例代码
2014/03/18 PHP
PHP获取日期对应星期、一周日期、星期开始与结束日期的方法
2018/06/22 PHP
深入理解 PHP7 中全新的 zval 容器和引用计数机制
2018/10/15 PHP
php的扩展写法总结
2019/05/14 PHP
javascript 数据类型转换(parseInt,parseFloat)
2010/07/20 Javascript
各种常用的JS函数整理
2013/10/25 Javascript
浅谈jQuery中height与width
2015/07/06 Javascript
AngularJS基础 ng-value 指令简单示例
2016/08/03 Javascript
JS实现页面数据无限加载
2016/09/13 Javascript
基于jQuery实现照片墙自动播放特效
2017/01/12 Javascript
webpack踩坑之路图片的路径与打包
2017/09/05 Javascript
vue2.0设置proxyTable使用axios进行跨域请求的方法
2017/10/19 Javascript
浅谈webpack 自动刷新与解析
2018/04/09 Javascript
解决jquery有正确返回值但不执行success函数的问题
2018/08/20 jQuery
如何在vue项目中嵌入jsp页面的方法(2种)
2020/02/06 Javascript
JavaScript实现PC端四格密码输入框功能
2020/02/19 Javascript
vue 实现把路由单独分离出来
2020/08/13 Javascript
详解datagrid使用方法(重要)
2020/11/06 Javascript
深入解析Python中函数的参数与作用域
2016/03/20 Python
python 上下文管理器使用方法小结
2017/10/10 Python
详解Python异常处理中的Finally else的功能
2017/12/29 Python
Django url,从一个页面调到另个页面的方法
2019/08/21 Python
浏览器实现移动端高性能css3动画(开启gpu加速)
2013/12/23 HTML / CSS
Farnell德国:电子元器件供应商
2018/07/10 全球购物
Anthropologie英国:美国家喻户晓的休闲服装和家居产品品牌
2018/12/05 全球购物
几个数据库方面的面试题
2016/07/01 面试题
校园安全广播稿
2014/02/08 职场文书
外语系大学生自荐信范文
2014/03/01 职场文书
新年寄语大全
2014/04/12 职场文书
品牌转让协议书
2014/08/20 职场文书
小学生一分钟演讲稿
2014/08/26 职场文书
小学红领巾广播稿(3篇)
2014/09/13 职场文书
2015年预备党员自我评价
2015/03/04 职场文书
教师旷工检讨书
2015/08/15 职场文书