在 AJAX 请求上动态生成的大型 SVG 文件在 IE9 中无法正确加载
Large SVG files that are generated dynamically on an AJAX request are not loading properly in IE9
>我有一个有很多控件的应用程序,它使用 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 文档的方法和属性。
提前致谢法尼恩德拉
使用 SVG,您正在寻找一个 SVGLoad 事件。它恰好映射到一个名为 load 的属性,但如果您使用的是 addEventListener,则需要查找而不是加载的 SVGLoad。例如
rootElement.addEventListener("SVGLoad", handler, useCapture)
SVG的另一个问题是SVGLoad事件不会转到窗口对象,因此您无法像使用html那样执行window.addEventListener。
- 如何在IE9中使用ajax启用加载本地文件
- IE9中的Angular JS页面加载问题
- 当窗口打开时,IE9在加载前启动事件
- 当网格视图设置为 true 时,Jqgrid 在 IE9 中显示“正在加载”
- IE9 - 使用 jQuery 将 html 表加载到页面中
- 使用 JavaScript 为 IE9 用户重新加载页面一次
- d3js 加载静态 svg 在 IE9 中不起作用(responseXML = null)
- 挖空动态模板不会在 IE9 中加载
- AngularJS在IE9 Quirks模式下未加载
- iframe 内容在 IE8 - IE9 中完全加载
- Dynatree IE9 加载时出现问题
- 在 AJAX 请求上动态生成的大型 SVG 文件在 IE9 中无法正确加载
- Angularjs $http IE9 中的本地磁盘问题加载数据
- popuppanel中的Pagemethods没有在IE9中第二次加载
- 如果readyState加载时发生register事件,则在IE9中未触发onload事件
- '日期'在FacePile加载的javascript中的IE9中未定义
- 上传图片并在画布中加载,IE9,不支持FileApi
- 从HTML头加载层时,Dojo构建在IE9上失败:property'dir'未定义
- Yammer Embed赢得't完成加载:IE8和IE9中出现JavaScript错误
- Javascript:为IE9加载不同的样式表