【问题标题】:Using svgweb to detect when svg object is loaded?使用 svgweb 检测 svg 对象何时加载?
【发布时间】:2012-01-14 03:20:14
【问题描述】:

我正在尝试使用 svgweb 插件检测 svg 对象何时加载到我的页面上,然后获取 svg 内属性的值。我尝试了在文档中找到的这个:

  $(document).ready(function() {
    window.addEventListener('SVGLoad', function() {
      alert('done');
    }, false);
  });

但它似乎不起作用。我选择了这个版本的各种方式来检查,因为在此之后我使用了其他jQuery的文档准备功能。我究竟做错了什么?我需要添加其他内容吗?

编辑:哦,顺便说一句,这也不起作用:jQuery $(document).ready and svg-web window.onsvgload

【问题讨论】:

  • 我不确定这样的事件是否真的存在。也许您可以使用 raphaeljs.com 之类的库创建 SVG?
  • 我正在使用库/插件:svgweb。这就是事件的来源。我只是不明白如何让它工作。
  • 你在任何地方都有 svgweb 对象吗?也许你可以在上面使用这个事件?
  • @Armin:你是什么意思?我有一个对 svgweb 插件的脚本引用,然后文档说要检查是否如上所述加载了 SVG。但这没有用。 svg 文件包含在 元素中...

标签: jquery svg


【解决方案1】:

您需要在外部 svg 元素而不是窗口上调用 addEventListener。 SVG 事件不会像 html 那样进入窗口。

如果你有一个 svg 文档而不是一个包含 svg 的 html5 文档,你可以使用 document.documentElement 获取外部 svg 元素,否则在外部 svg 元素上放置一个 id 并调用 document.getElementById 来获取它。

var svgElement = document.getElementById("<outer svg element id>");
svgElement.addEventListener("SVGLoad", ...

【讨论】:

  • 我有对象元素来包含带有 data 属性的 svg 文件。我不能自己更改 svg 文件,因为它们总是在不同的环境中生成(这是一个技术文档系统)。而且我不能真正通过 id 获得 svg 元素,因为我不会事先知道那个 id(这是通过巨大的 xslt 转换完成的)。我可以到达对象元素,然后当我知道它已加载时,我想选择其中的 svg...
  • 在你的情况下 var svgElement = document.getSVGDocument().documentElement;
  • 这就是我在问题的 cmets 中的意思 :)
猜你喜欢
  • 2011-12-23
  • 1970-01-01
  • 2012-07-07
  • 2019-04-24
  • 1970-01-01
  • 2011-12-24
  • 1970-01-01
  • 2017-07-04
  • 1970-01-01
相关资源
最近更新 更多