2017-08-09 34 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;