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

Javascript
jQuery生成asp.net服务器控件的代码
javascript 实现的完全兼容鼠标滚轴缩放图片的代码
JavaScript学习笔记(十七)js 优化
使用SyntaxHighlighter实现HTML高亮显示代码的方法
javascript contains和compareDocumentPosition 方法来确定是否HTML节点间的关系
利用jQuery 实现GridView异步排序、分页的代码
jquery.lazyload 实现图片延迟加载jquery插件
Lazy Load 延迟加载图片的 jQuery 插件
jquery 插件实现图片延迟加载效果代码
javascript小数计算出现近似值的解决办法
jquery1.4后 jqDrag 拖动 不可用
jquery 应用代码 方便的排序功能
选择TreeView控件的树状数据节点的JS方法(jquery)
jquery 图片Silhouette Fadeins渐显效果
JQuery Dialog(JS 模态窗口,可拖拽的DIV)
javascript 同时在IE和FireFox获取KeyCode的代码
js 键盘记录实现(兼容FireFox和IE)
javascript 函数速查表
jQuery AnythingSlider滑动效果插件
经典海量jQuery插件 大家可以收藏一下

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


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-12   浏览: 243 ::
收藏到网摘: 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环境运行正常。