JS应⽤之禁⽌抓屏、复制、打印
项⽬需要禁⽌抓屏、复制、打印的要求,复制、打印做起来可能顺⼿⼀点⽹上各种各样的脚本俯⾸皆是。但抓屏怎么禁
⽌?PrintScreen是⼀个特殊的键,它是没有keyCode的键,所以onkeydown变得毫⽆⽤处。不过换⼀种思路的话可会更好,我们从粘贴板着⼿采取曲线救国策略。代码如下:
<script language="javascript">
window.setInterval("clipboardData.setData('text','')",100);
blur事件</script>
以上代码是每100毫秒清空⼀次粘贴板操作。当页⾯加载时脚本程序就开始⾃动执⾏。但这样有个弊端,不管⽹页被最⼩化还是怎么的只要这个窗⼝开着我们电脑所有的复制操作都⽆法进⾏(脚本⼀直在清空粘贴板),从某种意义上讲是达到预期效果了,但有些⽋佳:(。
我们知道所有的控件都有onfocus和onblur事件,window窗⼝也不例外。我们通过利⽤这两个事件,只有在当前窗⼝处于活动状态时才执⾏清空操作,否则停⽌执⾏。代码如下:
<script language="javascript">
var interval
</script>
这样就可以完美的解决这个问题。但对于不将截屏内容放⼊粘贴板的截屏程序来说此⽅法还是⼼有余⽽⼒不⾜的。
最新测试实践发现使⽤onfocus和onblur事件的⽅法也不尽如⼈意,当焦点指向程序页⾯内其他控件(即使Table)
时,window将失去焦点从⽽触发onblur事件停⽌执⾏清空粘贴板命令,难道需要遍历所有控件为其onfocus和onblur绑定事件?有些迷茫与失望。
另focus只是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&&lKey)
{
clipboardData.setData('text','');
return false;
}
}
</script>
<noscript><iframe src=*.html></iframe></noscript>
<script language=javascript>
<!--
if (window.Event)
document.captureEvents(Event.MOUSEUP);
function nocontextmenu(){
event.cancelBubble = true
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;
}
以上代码在IE6.0环境运⾏正常。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论