在 Firefox 中,当服务器向浏览器发出一个纯 SVG 文档,并且在附加了 onload= 事件的 SVG 元素之前发出一个 Javascript 脚本元素时,可以确保已经加载了一个更早的 SVG 元素在下一个之前。因此,脚本可以假定它存在于 DOM 中,并且当脚本尝试访问它时可以访问它。
但是,在 IE9 中,DOM 元素的加载方式似乎没有保证或顺序。
有没有办法强制纯 SVG 文档(没有 DOCTYPE html5 或 meta xua 标签)在 IE9 中按文档顺序加载?
否则,您在 Javascript 中会有大量的猴子业务来简单地确保元素已加载到 DOM 中。
最佳答案
我在 SVG 或 DOM 规范中找不到任何要求元素按文档顺序加载的内容(只是它们是按该顺序绘制的)。如果这不是必需的,那么您将永远无法保证您期望的行为。我认为您毕竟需要依赖那个“猴子生意”。
一种可能性是在调用元素中添加一个子元素,该子元素是指向目标元素中后代的链接。这可能会延迟源元素上的加载事件,直到加载链接为止。
另一个是,如果容器包含引用外部资源的元素,则在容器元素上设置 externalResourcesRequired="true"
将具有禁用该容器内容的渐进显示的效果。换句话说,通过链接到另一个文档并设置该属性,您可以禁用 SVG 的流式处理行为,这可能会在加载事件触发时强制执行完整的 DOM。
关于javascript - IE9 是否按文档顺序加载 SVG dom?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10678948/