Этот код должен быть в документе.

document.ready используется для выполнения кода после полной загрузки DOM. Это можно использовать для прикрепления обработчиков событий к элементам на странице, например

$(function(){ 
    $('#somediv').click(function(){ 

    }); 
}) 

<div id="somediv"> </div> 

Внутри jQuery подключается кDOMContentLoaded а такжеwindow.onload как запасной вариант.In IE's case сделана попытка прокручивать окно просмотра снова и снова, пока не будет успешно.

У меня есть несколько вопросов, мой первый из которых связан с привязкой обработчиков событий кdocument само по себе, необходимо ли поместить этот код вdocument.ready ? Я всегда писал код ниже, не заключая его вdocument.ready

$(document).keydown(function(e){
    if (e.which == 39) { 
       alert( "right arrow pressed" );
       return false;
    }
});

И, как вы можете видеть, этоработает, Насколько я понимаю, поскольку этот код не подключается к каким-либо элементам в документе, но сам документ, нет необходимости заключать его вdocument.ready обработчик. Другая причина, по которой я не оборачиваюсь, заключается в том, что я делал то же самое в ванильном JavaScript, что эквивалентно приведенному ниже коду, который такжеработает.

document.onkeydown = function(){
var keyCode = event.keyCode || event.which;   
    if (keyCode == 39) { 
       alert( "right arrow pressed" );
       return false;
    }
}

Я видел множество постов, в которых люди помещают его вdocument.readyЕсть ли недостаток не оборачивать этот код вdocument.ready ?

Также я думаю, что этот вопрос проистекает из моей неясности того, что происходит в это время, когда строится DOM, так что если кто-то может объяснить, что происходит в период непосредственно перед тем, как DOM будет готов. Для меня документready когда html был разобран и преобразован в дерево DOM, или есть что-то еще?

В заключение, вот мои вопросы

When binding event handlers to the document itself, is it necessary to put that code in a document.ready. Are there any downsides to not wrapping the code in the document.ready ? What sequence of events take place when the document is being constructed, right before the document.ready is fired ?

Ответы на вопрос(7)

Ваш ответ на вопрос