【问题标题】:Capture the enter key cross-browser, my solution isn't working捕获跨浏览器的输入键,我的解决方案不起作用
【发布时间】:2011-04-30 23:15:00
【问题描述】:

我有一个我认为的跨浏览器解决方案来捕获我正在制作的聊天脚本中的输入键,这里是:

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

【问题讨论】:

    标签: javascript event-handling cross-browser enter


    【解决方案1】:

    尝试使用>

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

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

    【讨论】:

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-03-31
      • 2014-05-03
      • 2019-09-03
      • 2011-07-13
      • 1970-01-01
      • 2015-07-04
      • 2011-03-05
      • 2016-05-30
      相关资源
      最近更新 更多