Javascript 跨浏览器捕获enter键,我的解决方案不是';行不通

Javascript 跨浏览器捕获enter键,我的解决方案不是';行不通,javascript,event-handling,cross-browser,enter,Javascript,Event Handling,Cross Browser,Enter,我有一个我认为是跨浏览器的解决方案,可以在我正在制作的聊天脚本中捕获enter键,如下所示: nn=(document.layers)?true:false; ie=(document.all)?true:false; function keyDown(e) { var evt=(e)?e:(window.event)?window.event:null; if(evt){ var key=(evt.charCode)?evt.charCode: ((ev

我有一个我认为是跨浏览器的解决方案,可以在我正在制作的聊天脚本中捕获enter键,如下所示:

    nn=(document.layers)?true:false;
ie=(document.all)?true:false;
function keyDown(e) {
    var evt=(e)?e:(window.event)?window.event:null;
    if(evt){
        var key=(evt.charCode)?evt.charCode: ((evt.keyCode)?evt.keyCode:((evt.which)?evt.which:0));
        if(key=="13") document.getElementById('chatEnter').submit();
        }
    }
document.onkeydown=keyDown;
if(nn) document.captureEvents(Event.KEYDOWN);
我是从别人那里弄来的所以可能已经过时了?无论如何,正如您所看到的,表单id属性是chatEnter。我还尝试过使用document.forms[0]。submit,但也不起作用。它在FF中工作得很好,但在IE8 64位中没有运气(到目前为止,这是我唯一测试过的两个)。我在这里做错了什么?谢谢您的帮助。

尝试使用>

$(document).keypress(function(e) {
    if (e.which == "13") { 
        //enter pressed 
    }       
});

当然,您需要jQuery来完成它。没有比使用经过测试且广泛使用的跨浏览器框架更好的跨浏览器解决方案了。

没错,您得到的示例已经大量过时,并且包含了处理Netscape 4的代码,而Netscape 4已经无关十年了

不要仅为此使用jQuery。这并不难,如果只是要捕获的Enter键:

document.onkeydown = function(e) {
    e = e || window.event;
    if (e.keyCode == 13) {
        document.getElementById("chatEnter").submit();
    }
};

仅为这一个解决方案添加jQuery似乎需要相当大的开销。不过,如果我得不到更多的答案,那可能就是我要走的路了。不过,我认为,如果jQuery可以在一个框架中实现,那么我有一种方法可以在没有框架的情况下实现它。“他们必须对它进行编码。”@linus:是的,对于一种情况来说,这似乎是一种过火的行为。我不知道您为应用程序编写的Javascript数量,但考虑到它是一个聊天系统,我怀疑它的数量很大。jQuery是为处理跨浏览器问题而诞生的,除非您使用类似的框架(只有29kb),否则您将来可能会遇到更多问题。它是非常轻的javascript,只有几行AJAX代码,然后PHP完成所有繁重的工作。因此,我在添加jQuery时遇到了问题。我决定说,去它的,只需包含完成它所需的最小jQuery即可。谢谢你的帮助。