作家
登录

JS应用之禁止抓屏、复制、打印

作者: 来源:www.28hudong.com 2013-03-30 03:09:06 阅读 我要评论

项目需要禁止抓屏、复制、打印的要求,复制、打印做起来可能顺手一点网上各种各样的脚本俯首皆是。但抓屏怎么禁止?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环境运行正常。

  推荐阅读

  详解new function(){}和function(){}() 区别分析

情景一:var yx01 = new function() {return "圆心"}; alert(yx01); 我们运行情景一代码,将返回显示“[object object] ”,此时该代码等价于: function 匿名类(){ return "圆心"; } var yx01 = new 匿名类()>>>详细阅读


本文标题:JS应用之禁止抓屏、复制、打印

地址:http://www.17bianji.com/kaifa2/JS/29810.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)