在网页中禁用右键,能够直接的保护页面的源码,禁止用户右键查看原代码。这只是从最基础来预防,有备而来的黑客还是可以轻而易举的拿到代码,保险的还是从代码层级保护代码。
1、众所周知的鼠标 click 事件。示例:
<!DOCTYPE html>
<html >
<head>
<meta charset="utf-8">
<title>禁用右键</title>
</head>
<body>
点我一下试试!!
<div >
</div>
<script>
function click(){
if(event.button === 2){
alert( '您点击了鼠标右键 !!');
// return false;
} else if(event.button === 1){
alert( '您点击了鼠标中键 !!');
// return false;
} else if(event.button === 0){
// alert( '您点击了鼠标左键 !!');
return false;
}
}
document.onmousedown=click
</script>
</body>
</html>
return false之后会禁用当前鼠标的状态。但是连续单击鼠标左键和右键便又可以看到右键菜单了。
2、有一种方法区别于第一种方法,就是从dom的属性起到限制的作用。在body内添加属性你会发现,下面的弹窗并没有出现。
禁用右键:oncontextmenu="return false" 或者 oncontextmenu=self.event.returnValue=false
禁用左键:onselectstart="return false"
禁用复制:oncopy="return false;"
禁用剪切:oncut="return false;"
<!DOCTYPE html>
<html >
<head>
<meta charset="utf-8">
<title>禁用右键</title>
</head>
<body oncontextmenu=self.event.returnValue=false>
点我一下试试!!
<div >
</div>
<script>
function click(){
if(event.button === 2){
alert( '您点击了鼠标右键 !!');
} else if(event.button === 1){
alert( '您点击了鼠标中键 !!');
} else if(event.button === 0){
// alert( '您点击了鼠标左键 !!');
return false;
}
}
document.onmousedown=click
</script>
</body>
</html>
这种方法,使用时适用于鼠标,但是右键选中状态,在mac的触摸板上是不能识别的。下面请看第三种方法。
3、思路就是同样利用dom的 oncontextmenu 属性定义事件,在定义的事件上,禁用右键。示例:
<!DOCTYPE html>
<html style="height: 100%;" >
<head>
<meta charset="utf-8">
<title>禁用右键</title>
<style>
#myDIV {
background: yellow;
border: 1px solid black;
padding: 10px;
height: 100%;
}
</style>
</head>
<body id="myDIV">
点击右键试试是否有效
<script>
document.getElementById("myDIV").oncontextmenu = function() {myFunction()};
function myFunction() {
window.event.returnValue=false;
return false;
}
</script>
</body>
</html>
恭喜你,成功解决了!
如开头所讲,这些解决办法只是最基本的防止源代码丢失,不过这样对于微有经验的开发者来说,就是茅草门。具体的防御还是需要从代码层级加强。
来源:oschina
链接:https://my.oschina.net/u/3502206/blog/2221593