Microsoft Edge不会在azax调用gzip压缩SVG文件时呈现SVG样式元素

时间:2017-08-09 06:16:51

标签: javascript jquery css d3.js svg

我正在尝试获取gzip压缩文件的内容并将其附加到HTML并使用d3.js处理元素。一切都很好,SVG文件的所有内容都被解析并使用jquery添加到DOM中,并且所有浏览器都在SVG内容中呈现样式标记,并将所有这些样式应用于除Microsoft Edge之外的SVG元素。

通过在浏览器上直接从文件URL(而不是使用ajax调用)加载SVG文件,Microsoft Edge中的一切都很好。但是,尝试使用ajax获取内容时,它不会渲染样式并显示黑色元素,如下图所示:

svg styles not rendered

这就是通过从Microsoft Edge中的URL加载文件来显示它的方式:

enter image description here

这是我用来调用文件的ajax代码:

var settings = {
       "crossDomain": true,
       "url": file.svg,
       "method": "GET"
};

$.ajax(settings).done(function (response) {

    var floorPlanSVG = document.importNode(response.documentElement,true);

    $('#appendedFloorPlan').append(floorPlanSVG);

});

这就是如何将SVG的内容添加到DOM中:

enter image description here

除了Microsoft Edge(Google Chrome的屏幕截图)之外,所有浏览器的代码都很好。有没有办法克服这个问题?

1 个答案:

答案 0 :(得分:2)

我刚删除document.importNode,问题现在就解决了:

var floorPlanSVG = response.documentElement;