日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 前端技术 > javascript >内容正文

javascript

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

發布時間:2025/3/21 javascript 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JS应用之禁止抓屏、复制、打印 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

作者:Randy
原載: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.οnfοcus=function(){interval=window.setInterval("clipboardData.setData('text','')",100);}
window.οnblur=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.οnkeydοwn=CtrlKeyDown;
document.onselectstart=click;
document.οnmοusedοwn=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環境運行正常。

轉載于:https://www.cnblogs.com/Randy0528/archive/2008/02/15/1069412.html

總結

以上是生活随笔為你收集整理的JS应用之禁止抓屏、复制、打印的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。