2017-08-09 51 views
0

我想要获取gzipped SVG文件的内容并将其附加到HTML并使用d3.js处理元素。一切正常,SVG文件的所有内容都被解析并使用jquery添加到DOM中,所有浏览器都在SVG内容中渲染样式标签,并将所有样式应用于除Microsoft Edge之外的SVG元素。Microsoft Edge不会在ajax上呈现SVG样式元素调用gzip的SVG文件

通过在浏览器中直接从文件URL(不通过使用ajax调用)加载SVG文件,Microsoft Edge中的一切都很好。但是,试图让使用AJAX,它不渲染样式,并显示黑色元素作为下面的图片内容:

svg styles not rendered

这是通过加载在微软边缘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

的代码在所有浏览器都很好,除了微软边缘(截图来自谷歌浏览器)。有没有办法解决这个问题?

+0

让我想起https://meta.stackoverflow.com/q/340293/3702797的,我没有在手的边缘,以帮助你出去了,但那些做的人可能会需要一些[MCVE]。至少是** minimal **(即只是'')代码的标记,它重现了这种行为,至多是一个工作小提琴(也许你可以在一些CORS ok服务上存放导入文件,例如dropbox) – Kaiido

回答

1

我只是删除document.importNode和问题解决现在:

var floorPlanSVG = response.documentElement;