javascript - Microsoft Edge 不会在对 gzipped SVG 文件的 ajax 调用中呈现 SVG 样式元素

标签 javascript jquery css d3.js svg

我正在尝试获取压缩后的 SVG 文件的内容并将其附加到 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 的屏幕截图)。有办法解决这个问题吗?

最佳答案

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

var floorPlanSVG = response.documentElement;

关于javascript - Microsoft Edge 不会在对 gzipped SVG 文件的 ajax 调用中呈现 SVG 样式元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45582921/

相关文章:

jQuery .get(),提交表单内/表单外的值

html - 滚动时语义 ui 粘性菜单会添加类 "bound bottom"

javascript - 使用scrollOverflow时fullPage.js不检测动态生成内容的高度

javascript - 在传单中坐标为 Lat Long

jquery - 在这个简单的例子中使用each()不起作用

css - 使用CSS将背景图像添加到div

css - 如何在 wordpress 中设置 wp_list_page 的样式?

javascript - 如何在 react 导航 5.x 中隐藏选项卡导航(底部选项卡)的标题?

javascript - jQuery 获取 HTTP URL 请求

javascript - 单击文档正文中的任意位置时关闭菜单,菜单本身除外