我找到了这个跨浏览器脚本
<script language=JavaScript>
<!--
var message="Function Disabled!";
function clickIE4(){
if (event.button==2){
alert(message);
return false;
}
}
function clickNS4(e){
if (document.layers||document.getElementById&&!document.all){
if (e.which==2||e.which==3){
alert(message);
return false;
}
}
}
if (document.layers){
document.captureEvents(Event.MOUSEDOWN);
document.onmousedown=clickNS4;
}
else if (document.all&&!document.getElementById){
document.onmousedown=clickIE4;
}
document.oncontextmenu=new Function("alert(message);return false")
// -->
</script>
我怎么能说 rightlick 应该适用于每个文本区域和每个文本字段标记?
PS:我知道,用户讨厌你停用右键!但在我的页面上它非常有用。
最佳答案
注意,在某些浏览器上,不会设置变量 e,并且存在各种此类问题。无论如何,面对这个问题,您需要获取事件的目标类型,然后检查它是否是文本或文本框..
这是检索事件目标的方法:
function eventHandler(e)
{
var targ;
if (!e) var e = window.event;
if (e.target) targ = e.target;
else if (e.srcElement) targ = e.srcElement;
if (targ.nodeType == 3) // defeat Safari bug
targ = targ.parentNode;
}
这是一个demo
因此,有了目标类型,您就可以按如下方式处理禁用右键单击的条件:
function checkIfTypeIsTextOrTextArea(event)
{
var targ;
if (e.target) targ = e.target;
else if (e.srcElement) targ = e.srcElement;
if (targ.nodeType == 3) // defeat Safari bug
targ = targ.parentNode;
return targ==="text" || targ="textarea";
}
function eventHandler(e)
{
var evt=e;
if(!e)
evt=window.event;
if(!checkIfTypeIsTextOrTextArea(evt))
//code to disable right click
}
关于javascript - 禁用右键单击除文本区域和文本字段之外的每个选项卡,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7460905/