【问题标题】:event.keyCode or event.ctrlKey not working in Internet Explorer 8event.keyCode 或 event.ctrlKey 在 Internet Explorer 8 中不起作用
【发布时间】:2021-04-11 05:05:12
【问题描述】:

我想捕获 Ctrl+click 事件、event.keyCode 和所有其他用于检测控制点击的东西在 Chrome 和 Firefox 上都可以正常工作。在 IE 上出现以下错误:

>>警报(event.keyCode);
“需要对象”

我尝试检测 Shift+click,Alt+click 一切都很好。我尝试处理异常,但没有任何效果。我什至尝试检测 keyCode 的返回类型的类型,获取 Alt + click 和 Shift + click 的数字。 Ctrl+click 我无法捕捉到任何东西。

我使用 jQuery 1.10.2 的代码如下:

$(document).keydown(function (event) {
    if (event.which == "17") cntrlIsPressed = true;
});
$(document).keyup(function () {
    cntrlIsPressed = false;
});
var cntrlIsPressed = false;

function call_new_url(param1) {
    if (cntrlIsPressed) {
        window.open("http://www.google.com");
    }
}

有人可以帮我解决这个问题吗?

【问题讨论】:

  • 寻找event.ctrlKeyevent.shiftKey
  • event.ctrlKey 在 IE 中没有被检测到,没有警报信息被抛出。我检查了控制台显示的错误消息 >>event.ctrlKey "Object required" function call_new_url(job) { if(event.ctrlKey) alert('ctrl'); if(event.shiftKey) alert('shift'); }

标签: javascript jquery-events keycode


【解决方案1】:

您可以在点击侦听器中检查event.ctrlKeyevent.shiftKey,而不是侦听keyPress 事件。

JavaScript:

$('#myLink').click(function (event) {
    if (event.ctrlKey) {
        console.info('Ctrl is pressed');
    } else {
        console.warn('Ctrl isn\'t pressed');
    }

    if (event.shiftKey) {
        console.info('Shift is pressed');
    } else {
        console.warn('Shift isn\'t pressed');
    }
});

See this code in action at JSFiddleedit 它。

【讨论】:

  • 谢谢。但仍然面临这个问题,当与 ctrl 和 click 一起使用时,警报根本没有响应,这是代码不起作用的唯一情况。
  • @user1002477 我认为您需要发布一些代码。不看代码,我只能猜测发生了什么。
  • @user2428112 顺便说一句,sn-p 在 IE 中对我不起作用。这是我的代码
  • event.which 在 IE function call_new_url(job) { alert(event.which); }987654331@上也无法识别
猜你喜欢
  • 2012-06-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-08
  • 1970-01-01
  • 1970-01-01
  • 2013-12-29
  • 2023-04-09
相关资源
最近更新 更多