javascript - 禁用右键单击除文本区域和文本字段之外的每个选项卡

标签 javascript block right-click

我找到了这个跨浏览器脚本

<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/

相关文章:

javascript - 标记在 Google map API 中不起作用

javascript - .js 代码中给出的 document.location() 函数在 Internet Explorer 中工作正常,但在 Firefox 中不起作用

.htaccess - 使用 htaccess 禁止文本文件中的 IP

objective-c - 打破嵌套 block Objective-C

javascript - 使用 Javascript 在 Firefox 中禁用 Shift + 右键单击

javascript - 调用未定义

javascript - 滚动到顶部功能时添加最小高度

ios - 从 block 内部返回方法对象

python - 如何在Python中使用Selenium执行右键单击?

c - 如何响应有关列表框项目中右键的鼠标消息?