当前位置: 爱符号 - 所有分类 - Web开发 - js - [js]javascript 屏蔽按键、右键
[js]javascript 屏蔽按键、右键 [js]javascript PingBiAnJian、YouJian
符号空间 发表于:2012-11-20 15:18:50 阅读(1245)
关键词:屏蔽按键 屏蔽按键 js js javascript javascript
摘要:如果你做过网页聊天程序,你也许不想让用户随意按下F5刷新页面。 如果你做过企业管理后台,你也许不想让用户随意右键弹出菜单,但是你不想让文本框的菜单也消失。 如果你做过网页嵌套程序,你也许不想在EXE界面中,还可以按下右键。 下面分享一段本人写的代码,可以让你的网页无法按下F5、Alt+F4,也无法弹出右键菜单,Shift+F10也不行。同时文本框中的右键菜单还可以用。具体需要放行哪行,请自行研究代码吧。

如果你做过网页聊天程序,你也许不想让用户随意按下F5刷新页面。

如果你做过企业管理后台,你也许不想让用户随意右键弹出菜单,但是你不想让文本框的菜单也消失。

如果你做过网页嵌套程序,你也许不想在EXE界面中,还可以按下右键。



下面分享一段本人写的代码,可以让你的网页无法按下F5、Alt+F4,也无法弹出右键菜单,Shift+F10也不行。

同时文本框中的右键菜单还可以用。具体需要放行哪行,请自行研究代码吧。

请放到网页的 </body>之前,或者放到<body>之后。

如果有问题,请跟贴。

function shieldCommonKey(element) {
    var _attachEvent = function(obj, eventName, func) {
        if (obj.addEventListener) {
            var name = eventName;
            if (name.indexOf("on") == 0)
                name = name.replace("on", "");

            obj.addEventListener(name, func, false);
        } else {
            var name2 = eventName;
            if (name2.indexOf("on") == -1) {
                name2 = "on" + eventName;
            }
            obj.attachEvent(name2, func);
        }
    };
    this.isAllowTagName = function (event) {
        var ex = event || window.event;
        if (ex == undefined)
            return false;
        //if (window.event == undefined)
        //    return false;
        var tagName = (ex.srcElement || ex.target).tagName.toLowerCase();
        return (tagName == "input" || tagName == "textarea"); //|| tagName == "img" || tagName == "a");
    };
    element.oncontextmenu = function(event) {
        var ex = event || self.event || window.event;
        if (ex == undefined)
            return true;
        if (isAllowTagName(ex))
            return true;
        //if (self.event == undefined)
        //    return true;
        //self.event.returnValue = false;
        ex.returnValue = false;
        return false;
    };
    /*jQuery(element).bind("contextmenu", null, function(eventData) {
        if (isAllowTagName())
            return;
        eventData.returnValue = false;
        //if (self.event == undefined)
        //    return;
        //self.event.returnValue = false;
    });*/
    _attachEvent(element, "keydown", function(event) {
        var ex = event || window.event;
        if ((ex.altKey) && (ex.keyCode == 37 || ex.keyCode == 39)) {
            ex.returnValue = false; //Alt+ ← →
            return false;
        }
        if ((ex.keyCode == 8 && !isAllowTagName(ex)) || (ex.keyCode == 116) || (ex.keyCode == 112) || (event.ctrlKey && event.keyCode == 82)) {
            ex.keyCode = 0;
            ex.returnValue = false; //退格 F5 F1 Ctrl+R
            return false;
        }
        if (ex.ctrlKey && event.keyCode == 78) {
            ex.returnValue = false; //Ctrl+N
            return false;
        }
        if (ex.shiftKey && event.keyCode == 121 && !isAllowTagName(ex)) {
            ex.returnValue = false; //Shift+F10
            return false;
        }
        if ((ex.srcElement || ex.target).tagName == "A" && ex.shiftKey) {
            ex.returnValue = false; //Shift+左键
            return false;
        }
        if (ex.altKey && ex.keyCode == 115) {
            window.showModelessDialog("about:blank", "", "dialogWidth:1px;dialogHeight:1px");
            return false; //Alt+F4
        }
    });
}






声明:以上内容仅代表作者观点,不代表爱符号赞成此内容或立场