页面加载后等待元素加载

4

我有一个函数,从文件中加载SVG Dom。目前,它创建了一个embed元素并将其放置在文档中,然后等待onload事件的触发。然而,显然,对于在页面加载后放置在文档中的元素,onload不会被调用。有没有办法在元素完成加载后注册一个要调用的函数?

这是我的代码:

function loadSVG(svgFilename, callback)
{
  // Loads data from an svg file
  // loadSVG(
  //           svgFilename, // The path to the file to load
  //           callback     // The function to be called with the
  //                        // SVG document once it loads.
  //        );            
  var embed = document.createElement("embed");
  embed.src = svgFilename;
  embed.onload = function() // Doesn't get called because page has already loaded
  {
    var doc = embed.getSVGDocument();
    document.getElementById("SVGLoader").removeChild(embed);
    callback(doc);
  };
  document.getElementById("SVGLoader").appendChild(embed);
}

2个回答

2

我发现了问题,原来我是在一个使用 style="display:none" 隐藏的 div 标签中加载SVG文档。由于某种原因,浏览器在这个标签中不会加载 embed 。当我移除了 style 属性后,onload 事件按照我的预期触发了。


我可能会重新排列脚本,使得onload处理程序在设置“src”之前定义,以防加载立即发生。此外,您应该考虑切换到<object>而不是<embed> - Erik Dahlström
谢谢,Erik,我会考虑的。 - Na7coldwater

1

谢谢,但我自己解决了:https://dev59.com/YlDTa4cB1Zd3GeqPJHPC#3705364 - Na7coldwater

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接