IE9 загружает SVG DOM в порядке документов?
В Firefox, когда сервер выдает чистый документ SVG в браузер и элемент скрипта Javascript запускается до того, как к элементам SVG, к которым прикреплены события onload =, можно быть уверенным, что более ранний элемент SVG был загружен до следующего один. Поэтому скрипт может предполагать, что он присутствует в DOM и доступен, когда скрипт пытается получить к нему доступ.
Однако в IE9, похоже, нет никакой гарантии или последовательности загрузки элементов DOM.
Есть ли способ заставить чистый документ SVG (без тегов DOCTYPE html5 или meta xua) загружаться в порядке документа в IE9?
В противном случае у вас будет много обезьян в Javascript, чтобы просто убедиться, что элементы загружены в DOM.
1 ответ
Я не могу найти ничего в спецификациях SVG или DOM, которые требуют загрузки элементов в порядке документов (только то, что они нарисованы в этом порядке). Если это не требование, вам никогда не будет гарантировано ожидаемое вами поведение. Я думаю, что вам все-таки придется положиться на этот "бизнес обезьян".
Одна возможность состоит в том, чтобы добавить дочерний элемент в вызывающем элементе, который является ссылкой на потомка в целевом элементе. Это может задержать событие загрузки для исходного элемента, пока ссылка не будет загружена.
Еще одна такая настройка externalResourcesRequired="true"
элемент контейнера будет иметь эффект отключения прогрессивного отображения содержимого этого контейнера, если этот контейнер содержит элементы, которые ссылаются на внешние ресурсы. Другими словами, связавшись с другим документом и установив этот атрибут, вы можете отключить потоковое поведение SVG, которое может вызвать полный DOM при возникновении событий загрузки.