【问题标题】:How can I disable Alt-Enter in IE?如何在 IE 中禁用 Alt-Enter?
【发布时间】:2010-12-08 05:58:48
【问题描述】:

由于 IE 的默认行为是在 Alt-Enter 命令上切换到全屏模式。我必须避免这种情况,并且必须附加自定义行为。

可行吗?

【问题讨论】:

    标签: javascript internet-explorer javascript-events


    【解决方案1】:

    不是在 JavaScript 中,不是。

    这是应用程序的一种行为,您无法真正控制它(浏览器扩展等除外)。

    您可以尝试捕捉页面上的按键,但这不会阻止用户轻松绕过它。

    有关键的字符代码列表,请参阅http://www.webonweboff.com/tips/js/event_key_codes.aspx。我很确定捕捉按键组合并不可靠。

    此外,IE 中的 Alt+Enter 会导致预期的行为,您不应尝试通过网页覆盖它。

    【讨论】:

    • 但我别无选择。我必须实现每一个功能,这只是其中之一:(。我知道阻止默认事件是不正确的做法,不应该这样做。但事情必须以这种方式交付:)
    • 您也遇到了技术障碍。您可以为 ALT 维护一个状态变量(按下键时设置为真,按下键时设置为假)和输入的状态变量(条件同上),并检查两个状态变量是否为真,并且 tryreturn false 以阻止默认操作。很有可能,IE 对该组合键的处理将优先于页面想要执行的任何操作。
    • 乔纳森,我设法识别出 alt enter 化合物。但无法使用“event.cancelBubble”、“event.returnValue”阻止事件冒泡。
    • 如我所想。 IE 可以防止这种滥用。您只需要告诉您的客户/雇主这是不可能的,并考虑替代方案
    【解决方案2】:

    既然你不能打败他们,那就加入他们吧。意思是,既然您可以捕获事件但无法停止它,那么您在用户按下 alt+enter 后超时运行相同的命令怎么样?

    例子:

    <script type="text/javascript">
    
    document.onkeydown = handleHotKeys;
    
    function handleHotKeys(e) {
        var keynum = getKeyCode(e);
        var e = e || window.event;
        if (keynum==13 && e.altKey) { // handle enter+alt
            setTimeout("toggleFullscreenMode",100);
        }
    
    }
    function getKeyCode(e){
        if (!e)  { // IE
            e=window.event;
            return e.keyCode;
        } else { // Netscape/Firefox/Opera
            return e.which;
        }
    }
    
    function toggleFullscreenMode() {
      var obj = new ActiveXObject("Wscript.shell");
      obj.SendKeys("{F11}");
    }
    </script>
    

    免责声明:在 IE8 中测试。您必须查看浏览器和版本才能使其适用于您所针对的特定版本的浏览器。这也假设用户将启用 javascript 和 activex 对象。

    【讨论】:

    • 这仅在用户启用了不安全的 ActiveX 控件(例如 WScript.Shell)时才有效,因此不适用于任何 Internet 或 Intranet 页面。
    猜你喜欢
    • 2011-09-19
    • 1970-01-01
    • 1970-01-01
    • 2020-10-29
    • 2022-01-17
    • 1970-01-01
    • 2012-09-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多