0

我有一个应用程序,它有很多控件,它使用 AJAX 来获取一些客户端属性,如高度和宽度,然后服务器生成一个大型 SVG 地图并返回一个响应。在响应的情况下,我无法加载响应 SVG 文件(其大小为 14 MB),因为在响应到达时没有触发事件(我尝试使用 DOMContentLoaded 和 OnLoad 但没有运气)。当我尝试在 javascript 中访问 SVG 的元素时遇到了错误,我认为 DOM 尚未准备好。如何确保加载大型 SVG 文件。在动态生成的 SVG 文件的情况下,当 DOM 准备好时,是否有我可以连接的事件?我为解决问题而采取的步骤(但没有运气) 我尝试在 JavaScript 中生成响应 SVG 的克隆,但没有运气,因为当我尝试访问 SVG 的一个元素时再次遇到异常。我需要一些关于如何使用 Javascript(任何事件?)在 IE9 中加载相对较大的 SVG 文件的建议,因为我已经能够在 Chrome 和 FireFox 中成功加载这些文件。

一小段示例代码说明使用SVGLoad事件后的问题。

   var SVG=document.getElementById('gwmroot');
   SVG.addEventListener("SVGLoad","LoadSVG",false);
   function LoadSVG()
    {
      var _gwmcore.svgDoc=document;
     }

在上面的代码中,SVG 文件存在于文档对象中,它动态地响应 Ajax 请求,随后回调发生在包含上述代码的 javascript 文件中。我无法以某种方式调用 LoadSVG 函数。_gwmcore 是一个全局对象,它具有处理 svg 文档的方法和属性。

提前致谢

4

1 回答 1

0

使用 SVG,您正在寻找SVGLoad 事件。它恰好被映射到一个名为 load 的属性,但如果您使用 addEventListener 它是 SVGLoad,您需要查找而不是加载。例如

rootElement.addEventListener("SVGLoad", handler, useCapture) 

SVG 的另一个问题是 SVGLoad 事件不会转到 window 对象,因此您不能像使用 html 那样执行 window.addEventListener。

于 2013-09-10T11:04:20.037 回答