出于某种原因,我们不想让别人复制粘贴或者审核元素查看我们的代码格式,总会用到各种各样的禁用鼠标右键代码及方法。那么,你知道几种呢?
第一种:直接让右键失效
在body标签中添加以下代码即可
1
| oncontextmenu=self.event.returnValue=false
|
完整代码如下:
1
| <body oncontextmenu=self.event.returnValue=false>
|
第二种:让鼠标右键失效,但同时不能用鼠标选取页面上的内容
跟上面第一种差不多,同时“编辑->全选”也没有作用。
代码如下:
1
| <body oncontextmenu="return false" onselectstart="return false" ondragstart="return false" onbeforecopy="return false" oncopy=document.selection.empty() onselect=document.selection.empty()>
|
第三种:效果跟第一个一样,但是多了一个JS鼠标被按下事件
在body标签中加入下面的代码
1
| onkeydown="if(event.keyCode==27) return false;" oncontextmenu="self.event.returnValue=false;"
|
然后在之前加入下面的代码
1 2 3 4 5 6 7 8 9
| <script language="javascript"> function rclick() { if(document.all) { if (event.button == 2){ event.returnvalue=false; } } } </script>
|
第四种:纯CSS禁用鼠标右键点击事件
在CSS样式表中加入以下代码
1 2 3 4 5 6 7 8 9
| <style> .rules{ -moz-user-select: none; -webkit-user-select: none; -ms-user-select: none; -khtml-user-select: none; user-select: none; } </style>
|
第五种:用CSS和js 禁止鼠标点击事件 加强浏览器兼容效果!
其实这么做无非就是尽可能的兼容多个浏览器
CSS代码部分
1 2 3 4 5 6 7 8 9
| <style> .rules{ -moz-user-select: none; -webkit-user-select: none; -ms-user-select: none; -khtml-user-select: none; user-select: none; } </style>
|
JS代码部分
1 2 3
| <script> document.body.onselectstart = document.body.ondrag = function(){return false;} </script>
|
第六种:这方法也是第一种方法的升级版、加强版!!!
同样的,使用方法也是在body标签中加入以下代码
1 2 3 4 5 6 7
| ο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()'
|
第七种:这方法是纯JS。这个弊端比较明显,实用性也不是很好。
代码如下
1 2 3 4
| <script language="JavaScript"> document.οncοntextmenu=new Function("event.returnValue=false;"); document.onselectstart=new Function("event.returnValue=false;"); </script>
|
第八种:这个方法直接禁止选择文本,文本都不给选择了,又谈何复制呢?
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
| <script type="text/javascript"> var omitformtags=["input", "textarea", "select"]; omitformtagsomitformtags=omitformtags.join("|"); function disableselect(e){ if (omitformtags.indexOf(e.target.tagName.toLowerCase())==-1){ return false; } } function reEnable(){ return true; if (typeof document.onselectstart!="undefined"){ document.onselectstart=new Function ("return false"); }else{ document.onmousedown=disableselect; document.onmouseup=reEnable; } } </script>
|
第九种:直接禁用键盘三个按键加禁止鼠标右键:shift,ctrl,alt.
代码如下
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
| <script language="javascript" type="text/javascript"> <!-- function key(){ if(event.shiftKey){ window.close(); } if(event.altKey){ if(event.ctrlKey){ return false;}
if (window.Event) document.captureEvents(Event.MOUSEUP); function nocontextmenu(){ event.cancelBubble = true event.returnValue = false; } function norightclick(e){ if (window.Event){ if (e.which == 2 || e.which == 3) else if (event.button == 2 || event.button == 3){ document.oncontextmenu = nocontextmenu; document.onmousedown = norightclick; } } } } } </script>
|
第十种 :自定义鼠标右键菜单!
也是目前千羽所知道、想到的最后一种了。不过呢,这个办法很好用!不多说,代码如下
HTML部分,新建一个div盒子
1 2 3 4 5 6 7
| <div id="menu"> <div class="menu">功能1</div> <div class="menu">功能2</div> <div class="menu">功能3</div> <div class="menu">功能4</div> <div class="menu">功能5</div> </div>
|
CSS部分,设置菜单项的样式
1 2 3 4 5 6 7 8 9 10 11 12 13
| #menu{ width: 0; height: 125px; overflow: hidden; box-shadow: 0 1px 1px #888,1px 0 1px #ccc; position: absolute; } .menu{ width: 130px; height: 25px; line-height: 25px; padding: 0 10px; }
|
JS部分,用来控制菜单项的显示与隐藏
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| window.oncontextmenu=function(e){ e.preventDefault(); var menu=document.querySelector("#menu"); menu.style.left=e.clientX+'px'; menu.style.top=e.clientY+'px'; menu.style.width='100px'; menu.style.height='auto'; window.onclick=function(e){ document.querySelector('#menu').style.height=0; } }
|
总结:办法虽多,但是呢各有弊端。