2

我的页面上有一个object带有 SVG 图形的标签:

<object data="graphics.svg" type="image/svg+xml" id="graphics" />

我想执行一些需要完全加载 svg 文件的代码。所以使用 jQuery 我放了:

$('#graphics').load(function() {
    // some code
})

并使用本机 JavaScript 我输入:

$('#graphics')[0].addEventListener('load', function() {
    // some code
});

现在第二个片段有效,第一个无效。我在这里想念什么?我认为embed标签会提供另一种行为,但似乎没有区别。

4

2 回答 2

2

来自jQuery 文档

与图像一起使用时加载事件的注意事项 开发人员尝试使用 .load() 快捷方式解决的一个常见挑战是在图像(或图像集合)完全加载时执行一个函数。应该注意几个已知的警告。这些是:

  • 它不能始终如一地工作,也不能可靠地跨浏览器

  • 如果图像 src 设置为与以前相同的 src,它不会在 WebKit 中正确触发

  • 它没有正确地冒泡 DOM 树

  • 可以停止对已经存在于浏览器缓存中的图像进行触发

和:

当元素和所有子元素都已完全加载时,加载事件将发送到该元素。此事件可以发送到与 URL 关联的任何元素:图像、脚本、框架、iframe 和窗口对象。

于 2013-01-17T13:15:18.997 回答
-1

尝试类似的东西

var element = $("<object/>");
    element.load(function () {
)};
于 2013-01-17T13:09:17.820 回答