Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/382.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript e.keyCode之前是否应检查e.keyCode,反之亦然?_Javascript_Dom Events_Keycode - Fatal编程技术网

Javascript e.keyCode之前是否应检查e.keyCode,反之亦然?

Javascript e.keyCode之前是否应检查e.keyCode,反之亦然?,javascript,dom-events,keycode,Javascript,Dom Events,Keycode,假设我没有使用jQuery,并且希望支持IE8和其他主流浏览器 为了规范化事件,我遵循以下模式: document.onkeydown = function(e) { var code; if (!e) { var e = window.event; } code = e.which || e.keyCode; // More stuff here... }; 但是,我怀疑如果我更改了e.whichvse.

假设我没有使用jQuery,并且希望支持IE8和其他主流浏览器

为了规范化事件,我遵循以下模式:

document.onkeydown = function(e) {
    
    var code;
    
    if (!e) {
        var e = window.event;
    }
    
    code = e.which || e.keyCode;

    // More stuff here...
};
但是,我怀疑如果我更改了
e.which
vs
e.keyCode
检查的顺序,就像这样

code = e.keyCode || e.which;
…那么我的代码在不同浏览器中的行为可能会有所不同

  • 问题:顺序重要吗?一份订单比另一份订单“更好”吗 其他的
  • 奖励:如果我只支持IE8及以上版本,那么
    e.charCode
    是否重要
  • 另一个好处是:我应该使用
    var e=window.event
    还是只使用
    e=window.event

  • 1。是的,顺序很重要。

    您应该使用的顺序确实是:

    code = e.which || e.keyCode;
    
    这是因为大多数浏览器支持
    e.which
    (.甚至声明它只是为了兼容性。大多数流行的现代浏览器返回
    未定义的
    0
    (或者ASCII,或者扩展的ASCII,如果你幸运的话,即使如此,也只在
    按键上)

    12的附加读数可能应在以下位置进行:

    如果您希望处理关键事件,请在键入唯一输入字段时报告事件参数的[相关]属性

    3.您应该明确使用
    var e=window.event;


    如果你不使用
    var
    ,你实际上是在声明
    window.e=window.event
    ,这很愚蠢。使用
    var
    在你的处理程序的范围内保持
    e
    的定义。

    那么
    code=e.which | e.keyCode
    呢?谢谢你的建议。我将继续使用这种风格。对于哪些浏览器是“which”使用了不支持“keyCode”的吗?@dandavis我不确定,尽管搜索了一下,我还是没能弄清楚。你是说e.keyCode“第一位的”因此,任何支持e的浏览器都必须支持e.keyCode吗?@Jackson:不,我是说我从来没有使用过它。我认为只有netscape需要它,而且我已经有一段时间没有瞄准netscape了……感谢你给出明确的答案!quirksmode链接似乎有点过时,但小提琴很棒;我会把它保留在书签中。
    code = e.keyCode || e.which;