我有一个具有大量控件的应用程序,它使用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文档的方法和属性。
提前致谢 Phaneendra
答案 0 :(得分:0)
使用SVG,您正在寻找SVGLoad event。它碰巧被映射到一个名为load的属性,但如果你正在使用addEventListener它是SVGLoad你需要查找而不是加载。 E.g。
rootElement.addEventListener("SVGLoad", handler, useCapture)
SVG的另一个问题是SVGLoad事件不会转到窗口对象,所以你不能像使用html一样做window.addEventListener。