有時我們會遇到禁止用戶復制網站的文字內容,例如小說網站,我們可以通過下列方法提高復制內容的門檻,來實現我們的目標。
1.禁用選中和右鍵:
在<body>標簽中添加以下代碼:
οncοntextmenu='return false' 禁止右鍵
οndragstart='return false' 禁止拖動
onselectstart ='return false' 禁止選中
οnselect='document.selection.empty()' 禁止選中
οncοpy='document.selection.empty()' 禁止復制
onbeforecopy='return false' 禁止復制
οnmοuseup='document.selection.empty()'
如下:
<body leftmargin=0 topmargin=0 οncοntextmenu='return false' οndragstart='return false' onselectstart ='return false' οnselect='document.selection.empty()' οncοpy='document.selection.empty()' onbeforecopy='return false' οnmοuseup='document.selection.empty()'>
2.禁止網頁另存為:在<body>后面加入以下代碼:
<noscript>
<iframe src="*.htm"></iframe>
</noscript>
這時在電腦端已經無法選擇復制,但是在移動端還可以選中復制,再添加以下css代碼用來禁止選中文字。
3.禁止選中文字
*{
moz-user-select: -moz-none;
-moz-user-select: none;
-o-user-select:none;
-khtml-user-select:none;
-webkit-user-select:none;
-ms-user-select:none;
user-select:none;
}
這時正常的選擇復制都已經被禁用但是還可以用瀏覽器的查看源碼和調試工具來直接從代碼中復制內容。
4.禁用F12按鍵
//禁用F12
window.onkeydown = window.onkeyup = window.onkeypress = function (event) {
// 判斷是否按下F12,F12鍵碼為123
if (event.keyCode == 123) {
event.preventDefault(); // 阻止默認事件行為
window.event.returnValue = false;
}
}
5.禁用調試工具
var threshold = 160; // 打開控制台的寬或高閾值
// 每秒檢查一次
var check = setInterval(function() {
if (window.outerWidth - window.innerWidth > threshold ||
window.outerHeight - window.innerHeight > threshold) {
// 如果打開控制台,則刷新頁面
window.location.reload();
}
}, 1000);
至此,已經限制了大部分的復制功能,但是還不能徹底禁止,更完善的方法還需學習整理。