event.keyCode或event.ctrlKey在Internet Explorer 8中不起作用

时间:2014-04-04 08:01:49

标签: javascript javascript-events keycode

我想捕获 Ctrl +点击事件,event.keyCode以及用于检测控制点击的所有其他内容在Chrome和FF上运行良好。在IE上遇到以下错误:

  
    

警报(event.keyCode);       "需要对象"

  

我试过检测 Shift +点击, Alt +点击一切正常。我尝试处理异常,但没有任何作用。我甚至尝试检测 Alt + click和 Shift + click的keyCode获取数字的返回类型的类型。 Ctrl +点击我无法捕获任何内容。

我的代码,使用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");
    }
}

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

1 个答案:

答案 0 :(得分: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