2011-04-30 40 views
3

我有什么,我认为是一个跨浏览器的解决方案,在我做一个聊天脚本捕获回车键,在这里它是:捕捉回车键跨浏览器,我的解决办法是行不通的

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位上没有运气(这是迄今为止我测试过的唯一两个)。我在这里做错了什么?谢谢你的帮助。

回答

11

尝试使用>

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

ofcourse你需要的jQuery它。与使用经过测试和广泛使用的跨浏览器框架相比,不可能有更好的跨浏览器解决方案。

+2

添加的jQuery只为这一个解决方案似乎是相当多的开销。如果我没有得到更多的答案,那么这可能只是需要采取的路线。不过,我会认为,如果jQuery能够在一个框架中实现它,那么我就有办法在没有框架的情况下完成它。他们必须编写一些代码。 – linus72982 2011-05-01 00:16:03

+1

@linus:是的,它确实看起来像是一种矫枉过正的情况。我不完全知道您为应用程序编写的Javascript的数量,但考虑到它是一个聊天系统,我怀疑它很多。 jQuery的诞生是为了处理跨浏览器的问题,你可以期待未来有更多的问题,除非你使用类似的框架(它只有29kb)。 – neebz 2011-05-01 00:28:50

+0

@David:谢谢你指出。 – neebz 2011-05-01 00:30:45

8

你是对的,你得到的例子已经过时了,并且包含了处理Netscape 4的代码,而Netscape 4已经与大约十年无关了。

请不要只为此使用jQuery。这并不难,如果它只是输入你想捕捉键:

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