使用appendChild向HTML元素添加SVG元素-在IE9中失败
Adding SVG element to HTML element with appendChild - failing in IE9?
我正在通过原型Ajax请求加载一个SVG文件,向其中添加一个类和一个id,然后将其放入div中
onSuccess: function(response) {
var svgElement = response.responseXML.documentElement;
svgElement.setAttribute("id", "someId");
svgElement.setAttribute("class", "someClass");
// At this point, everything is fine. I can verify that in IE9,
// I have a valid svgElement and the id and class have been correctly set.
var someDiv = $('someDiv');
someDiv.appendChild(svgElement); // This fails in IE9, but works elsewhere!
someDiv.insert(svgElement.xml); // This works in IE9, but fails elsewhere!
}
我只关心那些更好的浏览器——IE9是我在这里要担心的最低的浏览器。
有什么事吗?我暂时切换插入方法,这取决于我是否在IE中,但我想深入了解并以正确的方式修复它。
我绕过了"responseXML在不同的文档中"的问题,只需在所有情况下使用responseText:创建新的文档
onSuccess: function(response) {
var svgDoc;
if (window.DOMParser) {
var domParser = new DOMParser();
svgDoc = domParser.parseFromString(response.responseText, "text/xml");
} else {
svgDoc = new ActiveXObject("Microsoft.XMLDOM");
svgDoc.async = false;
svgDoc.loadXML(response.responseText);
}
var svgElement = svgDoc.documentElement;
}
如果你问我,这比导入文档(以及所有相关问题)更容易、更干净。
相关文章:
- 使用jquery创建dom元素会导致ie9出现拒绝访问错误
- 在IE9中使用jQuery.change定位select元素
- IE9-添加和删除DOM元素会破坏父keydown事件
- 如何“;postMessage”;当在IE9对象元素中查看时,从pdf中托管
- 为什么使用自定义标记创建元素会在 IE9 或 10 的 outerHTML 中添加 xml 命名空间,直到调用 .fin
- IE9在视图外元素上选择AllChildren
- (IE9)删除浮动或绝对定位的元素将导致同级元素的滚动条滚动回顶部
- 在IE9中添加/更改HTML元素的属性
- 动态元素宽度和 IE9 子像素精度
- 使用appendChild向HTML元素添加SVG元素-在IE9中失败
- 为什么设置一个元素's zindex返回到0,不将其移动到IE9中的其他对象之后
- 在IE8、IE9和IE10中使用javascript更改元素类名时可能出现错误
- 如何在IE9中检查元素上的事件侦听器
- 动态创建的元素和单击处理程序会导致IE9内存泄漏
- ie9 innerHTML不能与datatable .js创建的select元素一起工作
- 为什么在IE9中选择元素的类型是DispHTMLWndSelectElement而不是HTMLSelectElement
- 在IE9中没有调用select元素的内联处理程序
- 元素属性在ie9中未定义
- 当检索子代元素时,jQuery不能在ie9上工作
- 当尝试使用JavaScript动态添加表元素时,innerHTML在IE7, IE8和IE9中不呈现