【问题标题】:Waiting for element load after page has loaded页面加载后等待元素加载
【发布时间】:2010-09-13 23:48:46
【问题描述】:

我有一个从文件加载 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);
}

【问题讨论】:

标签: javascript svg onload


【解决方案1】:

我发现了问题所在,我正在将 SVG 文档加载到 div 标记中,该标记被 style="display:none" 隐藏。出于某种原因,当embed 在这个标签中时,浏览器没有加载它。当我删除 style 属性时,onload 事件按我预期的方式触发。

【讨论】:

  • 我可能会重新排序脚本,以便在设置“src”之前定义 onload 处理程序,以防负载立即发生。此外,您应该考虑切换到<object> 而不是<embed>
  • 谢谢,Erik,我会考虑的。
【解决方案2】:

相关:How to check if an embedded SVG document is loaded in an html page?

如果您可以控制 SVG 文档,您能否在其中添加一个脚本来调用浏览器窗口中的函数?

或者,正如该问题的答案所建议的,轮询以查看 SVG 文档是否已完成加载。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2017-09-13
  • 2016-11-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多