在Firefox中捕获的Ctrl + w事件在其他浏览器中不起作用

时间:2014-02-12 05:49:47

标签: jquery internet-explorer google-chrome firefox

我有下面的代码,我得到了浏览器的Ctrl + w事件,但它只能在Firefox中使用而不能在其他浏览器中使用。我发现keydown / keypress存在问题。有没有办法为这两个事件(keydown / keypress)的浏览器兼容性编写代码。

这是我的代码:

$(window).keydown(function (event) {
    event.preventDefault();
    if (event.which == 119 && event.ctrlKey) {
        alert("Ctrl-W pressed");
    }
    return false;
});

2 个答案:

答案 0 :(得分:0)

以下是仅针对未设置为默认值的键的解决方案

同样您不能使用JS

覆盖浏览器默认行为

这是快速解决方案

解决方案1(快速)

<强> CODE

$(document).keypress("w",function(e) {
  if(e.ctrlKey)
    alert("Ctrl+C was pressed!!");
});

小提琴 http://jsfiddle.net/J4t5d/1/

解决方案2

您可以使用js库轻松完成此操作 shortcut.js

解决方案3

你可以这样做:)

$(window).keydown(function(event) {event.preventDefault();
    if (event.which == 87 && ctrlMode == true) {
        alert("Ctrl-W pressed");
    }    
     return false;
});
$(document).keydown(function(e){e.preventDefault();
 if(e.ctrlKey){
        ctrlMode = true;
 }
});
$(document).keyup(function(e){e.preventDefault();
 if(e.ctrlKey){
     ctrlMode = false;
 }
});

小提琴http://jsfiddle.net/J4t5d/5/

希望它可以帮助你:)

答案 1 :(得分:0)

使用keypress而不是keydown:demo

$(window).keypress(function(event) {
        event.preventDefault();

        if (event.which == 119 && event.ctrlKey) {
            alert("Ctrl-W pressed");
        }    

    return false;
});