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 相关文章推荐
(currentStyle)javascript为何有时用style得不到已设定的CSS的属性
Aug 15 Javascript
js有关元素内容操作小结
Dec 20 Javascript
js判断输入是否为数字的具体实例
Aug 03 Javascript
jquery对ajax的支持介绍
Dec 10 Javascript
jquery动态添加删除一行数据示例
Jun 12 Javascript
AngularJS实现路由实例
Feb 12 Javascript
深入理解vue.js中的v-if和v-show
Jun 22 Javascript
canvas轨迹回放功能实现
Dec 20 Javascript
JavaScript实用代码小技巧
Aug 23 Javascript
Jquery异步上传文件代码实例
Nov 13 jQuery
JS精确判断数据类型代码实例
Dec 18 Javascript
javascript对象3个属性特征
Nov 17 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
在Windows版的PHP中使用ADO
2006/10/09 PHP
PHP垃圾回收机制引用计数器概念分析
2013/06/24 PHP
PHP自带方法验证邮箱是否存在
2016/02/01 PHP
laravel config文件配置全局变量的例子
2019/10/13 PHP
使用laravel指定日志文件记录任意日志
2019/10/17 PHP
IE中直接运行显示当前网页中的图片 推荐
2006/08/31 Javascript
通用JS事件写法实现代码
2009/01/07 Javascript
基于jQuery的Spin Button自定义文本框数值自增或自减
2010/07/17 Javascript
Extjs Gird 支持中文拼音排序实现代码
2013/04/15 Javascript
JS批量操作CSS属性详细解析
2013/12/16 Javascript
js window.open弹出新的网页窗口
2014/01/16 Javascript
js根据日期判断星座的示例代码
2014/01/23 Javascript
jQuery中height()方法用法实例
2014/12/24 Javascript
node.js操作mysql(增删改查)
2015/07/24 Javascript
JavaScript使用FileSystemObject对象写入文本文件内容的方法
2015/08/05 Javascript
微信小程序商城项目之商品属性分类(4)
2017/04/17 Javascript
Bootstrap datepicker日期选择器插件使用详解
2017/07/26 Javascript
Vue父子组件双向绑定传值的实现方法
2018/07/31 Javascript
ES6 fetch函数与后台交互实现
2018/11/14 Javascript
js实现延迟加载的几种方法详解
2019/01/19 Javascript
详解jenkins自动化部署vue
2019/05/14 Javascript
在vue+element ui框架里实现lodash的debounce防抖
2019/11/13 Javascript
python中xrange用法分析
2015/04/15 Python
Python中如何获取类属性的列表
2016/12/26 Python
pandas 对series和dataframe进行排序的实例
2018/06/09 Python
python学习——内置函数、数据结构、标准库的技巧(推荐)
2019/04/18 Python
python plotly画柱状图代码实例
2019/12/13 Python
利用pandas向一个csv文件追加写入数据的实现示例
2020/04/23 Python
Pandas替换及部分替换(replace)实现流程详解
2020/10/12 Python
Python Sqlalchemy如何实现select for update
2020/10/12 Python
jupyter notebook快速入门及使用详解
2020/11/13 Python
装修五一活动策划案
2014/01/23 职场文书
《悯农》教学反思
2014/04/28 职场文书
经验交流材料格式
2014/12/30 职场文书
2019年最新证婚词精选集!
2019/06/28 职场文书
javascript对象3个属性特征
2021/11/17 Javascript