平时我们在豆丁文档或者360文档想复制文档的时候发现,不能右键复制,那么他们是如何做到的呢?
- 禁止右键,在body标签内加入如下代码即可。
<body
oncontextmenu='return false' 禁止右键
ondragstart='return false' 禁止拖动
onselectstart ='return false' 禁止选中
onselect='document.selection.empty()' 禁止选中
oncopy='document.selection.empty()' 禁止复制
onbeforecopy='return false' 禁止复制
>
- 禁止打开浏览器的调试着工具,在js脚本中添加下载这段代码即可
var threshold = 10; // 打开控制台的宽或高阈值
// 每秒检查一次
var check = setInterval(function() {
if (window.outerWidth - window.innerWidth > threshold ||
window.outerHeight - window.innerHeight > threshold) {
// 如果打开控制台,则刷新页面
alert('不要想打开控制台') //注意:这句话很恶心,慎重打开。哈哈哈....
window.location.reload();
}
}, 1000);
3.禁止网页中的部分文本选中
html中禁止文字被选中
user-select:none |text| all | element
取值:
none:文本不能被选择
text:可以选择文本
all :当所有内容作为一个整体时可以被选择。如果双击或者在上下文上点击子元素,那么被选择的部分将是以该子元素向上回溯的最高祖先元素。
element:可以选择文本,但选择范围受元素边界的约束
说明:
1.IE6-9不支持该属性,但支持使用标签属性 onselectstart="return false;" 来达到 user-select:none 的效果;Safari和Chrome也支持该标签属性;
2.直到Opera12.5仍然不支持该属性,但和IE6-9一样,也支持使用私有的标签属性 unselectable="on" 来达到 user-select:none 的效果;unselectable 的另一个值是 off;
3.除Chrome和Safari外,在其它浏览器中,如果将文本设置为 -ms-user-select:none;,则用户将无法在该文本块中开始选择文本。不过,如果用户在页面的其他区域开始选择文本,则用户仍然可以继续选择将文本设置为 -ms-user-select:none; 的区域文本;
4.对应的脚本特性为userSelect。
代码如下:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>禁止选中</title>
</head>
<style>
.demo1 {
300px;
height: 300px;
background: skyblue;
/* 兼容性 */
-webkit-user-select: none;
-moz-user-select: none;
-o-user-select: none;
user-select: none;
}
</style>
<body>
<div class="demo1" onselectstart="return false;" unselectable="on">
测试文本
</div>
</body>
</html>
当然,一般情况下要想复制禁止右键的页面。
可以打开调试工具后,在console里面输入document.body.innerText
这样就可以复制网页文本信息了。