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中的$(document).ready()与window.onload的区别
Nov 18 Javascript
javascript标签在页面中的位置探讨
Apr 11 Javascript
使用PHP+JQuery+Ajax分页的实现
Apr 23 Javascript
JS小功能(offsetLeft实现图片滚动效果)实例代码
Nov 28 Javascript
IE6浏览器中window.location.href无效的解决方法
Nov 20 Javascript
学习JavaScript鼠标响应事件
Dec 25 Javascript
JS实现鼠标滑过显示边框的菜单效果
Sep 21 Javascript
vue实现全选、反选功能
Nov 17 Javascript
JavaScript实现百度搜索框效果
Mar 26 Javascript
详解Vue-cli中的静态资源管理(src/assets和static/的区别)
Jun 19 Javascript
JS实现的RC4加密算法示例
Aug 16 Javascript
微信小程序如何修改radio和checkbox的默认样式和图标
Jul 24 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面向对象详解(三)
2015/12/07 PHP
PHP自动补全表单的两种方法
2017/03/06 PHP
PHP实现将多个文件中的内容合并为新文件的方法示例
2017/06/10 PHP
Laravel学习教程之model validation的使用示例
2017/10/23 PHP
javascript iframe内的函数调用实现方法
2009/07/19 Javascript
使用jQuery的将桌面应用程序引入浏览器
2010/11/19 Javascript
javascript移动开发中touch触摸事件详解
2016/03/18 Javascript
jQuery操作json常用方法示例
2017/01/04 Javascript
Angular 4依赖注入学习教程之组件服务注入(二)
2017/06/04 Javascript
React 组件中的 bind(this)示例代码
2018/09/16 Javascript
利用jsonp解决js读取本地json跨域的问题
2018/12/11 Javascript
JavaScript数组、json对象、eval()函数用法实例分析
2019/02/21 Javascript
配置eslint规范项目代码风格
2019/03/11 Javascript
详解Node.js异步处理的各种写法
2019/06/09 Javascript
Python实现发送email的几种常用方法
2014/08/18 Python
python更新列表的方法
2015/07/28 Python
Python编程把二叉树打印成多行代码
2018/01/04 Python
Python生成短uuid的方法实例详解
2018/05/29 Python
Pandas读取MySQL数据到DataFrame的方法
2018/07/25 Python
Python面向对象程序设计示例小结
2019/01/30 Python
python实现诗歌游戏(类继承)
2019/02/26 Python
Python List列表对象内置方法实例详解
2019/10/22 Python
python 弧度与角度互转实例
2020/04/15 Python
python简单利用字典破解zip文件口令
2020/09/07 Python
python破解同事的压缩包密码
2020/10/14 Python
Python通过getattr函数获取对象的属性值
2020/10/16 Python
python中子类与父类的关系基础知识点
2021/02/02 Python
HTML5 Canvas基本线条绘制的实例教程
2016/03/17 HTML / CSS
毕业生自荐书
2014/02/02 职场文书
新闻发布会策划方案
2014/06/12 职场文书
贯彻落实“八项规定”思想汇报
2014/09/13 职场文书
幼儿园学前班幼儿评语
2014/12/29 职场文书
2015年检验员工作总结范文
2015/04/30 职场文书
儿子满月酒致辞
2015/07/29 职场文书
初中团委工作总结
2015/08/13 职场文书
口袋妖怪冰系十大最强精灵,几何雪花排第七,第六类似北极熊
2022/03/18 日漫