Ответ 1
DOM на самом деле является отдельной вещью для JavaScript. Доступ к DOM можно получить с других языков, таких как VBScript в IE. И языки программирования общего назначения, такие как Java, Python, PHP и т.д., Имеют собственные библиотеки DOM на основе браузера.
Основные операции DOM, которые работают как с HTML, так и с общими документами XML, можно найти в DOM Core; HTML-документы получают дополнительные методы, определенные в DOM HTML. Это последние "уровни поддержки, определяемые W3; не все браузеры поддерживают все в DOM Level 3 Core. Но DOM Level 1 Core довольно прочный.
Смутно, DOM HTML развивается дальше, но не в его собственной спецификации DOM. Вместо этого он является частью HTML5. Это стандартизирует множество расширений, которые уже широко поддерживаются в браузерах, например innerHTML
, и добавляет кучу больше материалов, которые еще не получили широкого применения (и могут быть изменены до стандартизации документа).
DOM - это только объектная модель документа: она указывает, что вы получаете внутри объекта document
. Он не указывает другие функции браузера, такие как содержимое window
. Объектная модель браузера (BOM) ранее была нестандартной; HTML5 делает первые попытки правильно документировать его.
В HTML5 также указаны части объектной модели браузера (BOM), которые ранее не были стандартизованы. Такие вещи, как window
, которые напрямую не связаны с содержимым document
.
Результатом всего этого является то, что нет ни одного документа, на который вы можете пойти, который расскажет вам все о том, какие методы и свойства у вас есть в веб-скриптах. Некоторое время DOM Core плюс HTML5 будет охватывать все это, но сегодня HTML5 включает в себя то, на что вы не можете положиться, и не совсем то, что можно прочитать в руководствах даже по стандартам стандартов. Так что да, боюсь, вам придется продолжать проверять MDC и MSDN для массовой поддержки.
Является ли 'Image' глобальной переменной или является ли это свойство 'window' глобальным объектом?
Image
определяется HTML5 как член объекта window
, который, будучи глобальным контекстом, позволяет ссылаться на него как на Image
..., что не совсем то же самое, что и глобальную переменную, но она достаточно близка для большинства.
Это функция-конструктор, которая возвращает объект DOM, реализующий интерфейс HTMLImageElement
(из HTML-кода DOM Level 1, расширенный в HTML5). Он был первоначально представлен в Netscape 3.0 как механизм предварительной загрузки изображений; плюс уже созданные изображения можно получить из document.images
, чтобы изменить их src
. Сегодня new Image()
не имеет ничего общего с document.createElement('img')
.
Я также хочу прочитать о свойстве 'src', поскольку он имеет нестандартное поведение - когда это свойство назначено, изображение перезагружается.
Ну, изображение не будет перезагружено обязательно, но это может привести к тому, что событие load
будет запущено в некоторых браузерах. К сожалению, это не стандартизировано (даже в HTML5, насколько я вижу). IE, Firefox и Opera load
в каждом наборе src
(даже если src
не изменен), тогда как WebKit (Chrome/Safari) только запускает его при загрузке исходного изображения.
Вот почему есть сайты с большими таблицами различного поведения браузера, и почему мы все еще должны активно тестировать в разных браузерах.