当前位置: 首页 > 图文教程 > 网络编程 > Javascript > JS应用之禁止抓屏、复制、打印

Javascript
一段超强的javascript代码解密方法
感觉很流畅的js实现的键盘控制(带惯性)
脚本安需导入(装载)的三种模式的对比
用js实现控制内容的向上向下滚动效果
非常不错的一个JS分页效果代码,值得研究
又一个漂亮的导航栏的下拉菜单
特想搞点新的创意出来-立体方块
得到当前行的值的javascript代码
通用的加入收藏夹代码支持IE Firefox等浏览器
javascript状态栏的字符先杂乱出现再排列组合的代码
js之弹出式窗口代码生成器
javascript实现的制作特殊字的脚本
一个加载js文件的小脚本
用JavaScript检查大写键(Caps Lock)是否打开的脚本
javascript中的几个运算符
ECMAScript 基础知识
你需要知道的JavsScript可以做什么?
JavaScript 编程引入命名空间的方法
javascript延时重复执行函数 lLoopRun.js
javascript之函数直接量(function(){})()

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


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-12   浏览: 270 ::
收藏到网摘: n/a

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