Javascript d3.js地图不在Internet Explorer或Firefox上渲染,仅在Chrome上渲染

Javascript d3.js地图不在Internet Explorer或Firefox上渲染,仅在Chrome上渲染,javascript,html,svg,d3.js,geojson,Javascript,Html,Svg,D3.js,Geojson,路径元素d属性就是问题所在。在Internet Explorer中查看控制台时,它明确提到 SVG4601:SVG路径数据的格式不正确,无法保存 完全解析 它似乎不是我正在使用的geojson,因为它在以下情况下工作: 以下是检查每个浏览器上的dom元素时的输出 铬: Internet Explorer: 火狐: 这就是我生成路径的方式: function initialSetup() { internalScope.svg.selectAll("path").transiti

路径元素d属性就是问题所在。在Internet Explorer中查看控制台时,它明确提到

SVG4601:SVG路径数据的格式不正确,无法保存 完全解析

它似乎不是我正在使用的geojson,因为它在以下情况下工作:

以下是检查每个浏览器上的dom元素时的输出

铬:

Internet Explorer:

火狐:

这就是我生成路径的方式:

 function initialSetup() {
     internalScope.svg.selectAll("path").transition().duration(500).style("opacity", 0).remove();

     internalScope.width = width = internalScope.svg[0][0].offsetWidth;
     internalScope.height = height = 800;
     projection = d3.geo.albers()
                        .rotate(4.4, 0)
                        .parallels([50, 60])
                        .scale(1)
                        .translate([0, 0]);
     path = d3.geo.path()
                  .projection(projection); // default path based on our projection

     internalScope.svg.attr("height", "100%")
                      .attr("viewBox", "0 0 " + width + " " + height)
                      .attr("preserveAspectRatio", "xMidYMid meet"); // prevent default height messing up svg

     // Append an outer rectangle so when it's clicked it will also reset back to all features view
     internalScope.svg.append("rect")
         .attr("class", "background")
         .attr("width", "100%")
         .attr("height", "100%")
         .on("click", function () {
             //TODO clicking the empty space could potentially do some sort of reset on everything ?
         })
     ;

     var groupofSvgElements = internalScope.svg.append("g");

     return groupofSvgElements;
 }
我将“groupOfSvgElements”传递给另一个方法

我用来生成d3.js映射的提取代码(在Angularjs指令中)

我的json文件——我真的不知道如何将它添加到小提琴或在这里共享它。

SVG4601:SVG路径数据的格式不正确,无法完全解析

出现以下错误的原因可能有很多,在我的例子中,是宽度如何传递给路径构造的。Chrome似乎比InternetExplorer更为宽大

调试这个问题的最佳方法(正如Ethan Jewett在上面的评论中所建议的)是在我上传到myjson.com的JSFIDLE中使用相同的geojson。使用它的代码片段

d3.json("https://api.myjson.com/bins/4wkia", function (error, json) {

我认为出现这个问题的唯一原因是SVG在浏览器之间并没有得到应有的规范。至于导致问题的原因,也没有太多错误信息。宽度对于路径生成无效,没有错误。唯一的调试方法是将我自己的代码一点一点地添加到JSFIDLE中。最终JSFIDLE:

IE和FF上的路径计算出错。你能分享你的代码,特别是填充“d”属性的代码吗?你能至少礼貌地解释一下为什么对我的帖子-1的人来说?我问我的问题还不够努力吗?我看不出这个问题有什么问题,它看起来相当清晰和简洁,你能告诉我哪里出了问题吗?代码没有帮助,因为它没有显示如何计算
path
变量。我们需要理解为什么不同浏览器中的'd'属性填充方式不同。最好是创建一个JSFIDLE。(我怀疑缺乏一个有效的例子是投-1票的原因。)好消息,这不是geojson文件(yayy)-。。。坏消息是,我仍然不知道它是什么,并希望它是geojson文件中的某种格式。在Internet explorer中测试,它有效。@EthanJewett我误读了你的评论。我没有意识到如何计算路径很重要,等一下,让我从我的代码中得到它,并尝试将其添加到fiddle中。offsetWidth和clientWidth都来自CSSOM,它们确实不是很好的跨浏览器,但它们不是SVG。
d3.json("https://api.myjson.com/bins/4wkia", function (error, json) {