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 相关文章推荐
Hutia 的 JS 代码集
Oct 24 Javascript
js弹出层之1:JQuery.Boxy (二)
Oct 06 Javascript
javascript高级程序设计第二版第十二章事件要点总结(常用的跨浏览器检测方法)
Aug 22 Javascript
jQuery之尺寸调整组件的深入解析
Jun 19 Javascript
extjs两个tbar问题探讨
Aug 08 Javascript
javascript和jquery实现设置和移除文本框默认值效果代码
Jan 13 Javascript
javascript类型系统——undefined和null全面了解
Jul 13 Javascript
在 Typescript 中使用可被复用的 Vue Mixin功能
Apr 17 Javascript
Vue隐藏显示、只读实例代码
Jul 18 Javascript
element跨分页操作选择详解
Jun 29 Javascript
Vue axios获取token临时令牌封装案例
Sep 11 Javascript
canvas实现贪食蛇的实践
Feb 15 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
4月1日重磅发布!《星际争霸II》6.0.0版本更新
2020/04/09 星际争霸
PHP实现用户认证及管理完全源码
2007/03/11 PHP
php Xdebug 调试扩展的安装与使用.
2010/03/13 PHP
PHP在线生成二维码(google api)的实现代码详解
2013/06/04 PHP
PHP序列化操作方法分析
2016/09/28 PHP
JavaScript 事件记录使用说明
2009/10/20 Javascript
javascript当onmousedown、onmouseup、onclick同时应用于同一个标签节点Element
2010/01/05 Javascript
jquery实现marquee效果(文字或者图片的水平垂直滚动)
2013/01/07 Javascript
jQuery动态效果显示人物结构关系图的方法
2015/05/07 Javascript
JQuery核心函数是什么及使用方法介绍
2016/05/03 Javascript
jQuery设置单选按钮radio选中/不可用的实例代码
2016/06/24 Javascript
浅析Node.js:DNS模块的使用
2016/11/23 Javascript
jquery mobile实现可折叠的导航按钮
2017/03/11 Javascript
原生JS实现九宫格抽奖效果
2017/04/01 Javascript
node使用UEditor富文本编辑器的方法实例
2017/07/11 Javascript
基于Vue生产环境部署详解
2017/09/15 Javascript
vue实现样式之间的切换及vue动态样式的实现方法
2017/12/19 Javascript
iView框架问题整理小结
2018/10/16 Javascript
详解jQuery设置内容和属性
2019/04/11 jQuery
vue任意关系组件通信与跨组件监听状态vue-communication
2020/10/18 Javascript
[47:12]TFT vs Secret Supermajor小组赛C组 BO3 第三场 6.3
2018/06/04 DOTA
Python中操作符重载用法分析
2016/04/29 Python
使用Python绘制图表大全总结
2017/02/11 Python
小米5s微信跳一跳小程序python源码
2018/01/08 Python
Python定义二叉树及4种遍历方法实例详解
2018/07/05 Python
python 产生token及token验证的方法
2018/12/26 Python
css3 border-radius属性详解
2017/07/05 HTML / CSS
医药专业应届毕业生求职信范文
2014/01/01 职场文书
少先队入队活动方案
2014/02/08 职场文书
调任通知
2015/04/21 职场文书
教师个人师德工作总结2015
2015/05/12 职场文书
2015年出纳工作总结与计划
2015/05/18 职场文书
《曹冲称象》教学反思
2016/02/20 职场文书
2019安全宣传标语大全
2019/08/14 职场文书
从零开始在Centos7上部署SpringBoot项目
2022/04/07 Servers
HTML页面中使两个div并排显示的实现
2022/05/15 HTML / CSS