我需要检查是否加载了OBJECT标记,在某些边缘情况下,在运行JavaScript之前加载了OBJECT,然后我的函数将永远不会触发。
<object type="image/svg+xml" data="svg/europas-ledande-online-butik.svg">Europas ledande online butik</object>
obj.addEventListener('load', function svgLoad() {..
如何检查我的OBJECT是否已加载? 我可以做:object onload =“存储一些全局变量”,然后检查它。 但那是笨重而丑陋的。
我无法检查宽度或高度,因为我不知道这些值(它是通过CMS添加的)
想法?
上面的例子恰好是一个SVG,但它可以是任何带有额外外部数据请求的元素 - 对象,图像,嵌入了什么。
如上所述:ONLOAD不是我想要做的事情(关注点的分离 - 内联事件处理程序对你不利)并且addEventListener不适用于已经加载的元素。
当然,我希望尽快触发我的svgLoad函数 - 只要对象准备好显示。
谢谢!
/ J
答案 0 :(得分:0)
这就是我最终做的事情:
<object class="slide visuallyhidden" onload="this.setAttribute('data-is-loaded', 'true')" type="image/svg+xml" data="svg/europas-ledande-online-butik.svg">Europas ledande online butik</object>
onload="this.setAttribute('data-is-loaded', 'true')"
是的,它是一个内联事件处理程序 - 但在这种情况下,它不会在它自己的元素之外做任何事情。这不是理想的,但必须这样做。
我可以设置课程,但我选择不这样做。 这种方式更具语义性,setAttribute具有出色的浏览器支持(一直回到DOM Core 1至少包含IE5)并且非常高效。
现在唯一的问题是使用OBJECT元素嵌入的SVG的onload似乎不包括链接背景。这意味着可以在下载任何链接的背景之前触发onload。