Что определяет доступность свойства DOM `document` в глобальном объекте javascript? - PullRequest
2 голосов
/ 02 декабря 2009

Я немного новичок в javascript и пытался понять, как взаимодействуют стандарт W3C DOM и javascript, как это определено в ECMAscript.

Конкретно, насколько я понимаю:

Стандарт ECMAscript определяет существование Глобального объекта, который предоставляет такие функции, как parseInt(string), и явно разрешает присутствие других встроенных объектов, доступных через него, но их определение оставлено для реализации.

Стандарт W3C DOM определяет набор объектов и интерфейсов, которые соответствуют структуре документа HTML. Одним из них является объект Document (заглавная D), содержащий такие методы, как getElementById. Однако эта спецификация, насколько я понимаю, не определяет, каким образом можно получить экземпляр такого объекта, представляющего текущий документ в браузере.

В основном, что мне нужно - это где прямо указано, что при выполнении javascript на веб-странице я могу вызвать document.getElementById("someId") (обратите внимание на строчную букву d), и что свойство document представляет DOM документа в котором исполняется JavaScript?

Является ли эта конкретная деталь специфичной для реализации. Разве это не должно быть где-то стандартизировано? Самое близкое, что я могу получить, - это документация Gecko DOM, которая подразумевает, что document и Document эквивалентны. Я думал, что JavaScript был чувствителен к регистру? Или я просто схожу с ума по интерпретации этих вещей?


* * 1020 Изменить: * * 1021

Просматривая стандартный рабочий проект HTML 5 после комментария Джейсона, я думаю, что то, что я ищу, это то, что я ищу

6.5.3.3 Создание скриптов

... агент пользователя должен выполнить следующие шаги:

4. Настройте глобальный объект сценария, контекст просмотра сценария, кодировку символов URL-адреса сценария и базовый URL-адрес сценария

6.5.3.1 состояния глобального объекта,

"Обычно это объект Window. В JavaScript это соответствует глобальному объекту."

Далее, 6.1 Просмотр состояний контекста

"Основное представление, посредством которого пользователь в основном взаимодействует с пользовательским агентом, является представлением по умолчанию. Объект AbstractView, представляющий это представление, должен также реализовывать интерфейс Window и упоминается как объект Window документа. Объекты WindowProxy пересылают все к объекту Window представления по умолчанию для активного документа. "

Поскольку интерфейс AbstractView реализует свойство документа в соответствии со спецификацией DOM 2 Views, это, по-видимому, определяет существование глобального свойства документа Javascript.

Ответы [ 2 ]

2 голосов
/ 02 декабря 2009

Это неофициально называется "DOM level 0", и оно никогда не было стандартизировано, несмотря на стабильность в течение десятилетия и более.

window, document и т. Д. Будут стандартизированы в HTML 5 (будущий стандарт W3C).

Что касается чувствительности к регистру: Document - это имя интерфейса. Это тип. document instanceof Document верно.

HTMLDocument - это другой интерфейс. document instanceof HTMLDocument тоже верно.

0 голосов
/ 02 декабря 2009

Это может не помочь, но мое понимание того, что вы спрашиваете, говорит о том, что вы немного запутались между экземпляром объекта и объектом и самим объектом.

Когда вы вызываете document.getElementById("someId"), вы делаете вызов экземпляру объекта с именем document, который является экземпляром объекта Document. Это так, что если вы выполните document instanceof Document, он вернет true.

Я не знаю, заявляет ли стандарт, что браузер создаст экземпляр элемента Document, или когда это произойдет, хотя я никогда не читал спецификацию.

...