15

我开发了工作 D3 驱动的图表,就所有其他浏览器而言,没有问题。

但最近在 Internet Explorer 8 中也出现了支持它们的需求。

但到目前为止,我无法在 IE8 中显示此 html。

这些是 D3 中使用的标签:

<svg> <path> <g> <line> <circle> <rect>

在过去的 6 个小时里,我浏览了很多材料和问题,包括:

在 IE8 中显示内联 SVG ”,从 2012 年 10 月开始就有这个答案

我也一直在研究这个问题,并提出了一些选择。

  • Chrome Frame - 一个浏览器插件,实际上在下面使用 chrome,这意味着 SVG 可以正常工作。如果您能够将插件部署到浏览器,这很好,但对于真正的商业环境,这可能是不可能的。

  • SVG Web - 目标是将 SVG 带到所有浏览器。它看起来是一个相当大的项目,有谷歌的意见。但是,尽管我对这些问题知之甚少,但这并不适用于 D3。

  • D34Raphael - 你提到了这个,我又发现它不能开箱即用。在 GitHub 上查看该项目,几个月来没有任何提交活动,并且有一些拉取请求“首先尝试获得对事件绑定所需的 .on() 的支持”。如果它不支持事件,那对您来说是个问题吗?我一般会远离这个。

  • R2D3 - 你提到的另一个。我从 D3 网站上获取了 Sankey 示例,并且必须进行一些更改才能使其正常工作。我无法工作的主要事情(拖动事件,组 - 虽然可以使用替代方案)。花了大约一天的时间让示例在 IE8 中运行,我相信它处于可用状态。GitHub 上的项目也更加活跃,开发人员正在提交、投入工作并非常积极地参与讨论等。这得到了我的投票。

还:

D3 IE8 兼容性?

wikipedia.org/wiki/Scalable_Vector_Graphics

SVG 网页兼容性

但是使用客户端插件的解决方案是不可接受的,到目前为止,我似乎无法在 IE8 中显示 svg。所以解决的办法就是找一些其他的方法来渲染矢量图。我想其他人也有同样的问题


编辑:

无论哪种方式,在我之后遇到同样问题的人至少会有一些集中的材料,并且会意识到在 IE8 上显示 svg 没有简单/真正的解决方案,最好花时间开始现有的代码重写/调整非-svg 版本

编辑:

经过一些测试后,我会说它值得尝试通过 R2D3 示例,看看是否可以简化/执行 IE8 中的代码

样品

编辑:

在分别测试不同元素的过程中,似乎出现了一些 r2d3 问题

最常见的是Invalid argumentObject 不支持此属性或方法

因为我不习惯为 IE8 开发,所以我发现了一些有用的提示:

转储 javascript 变量显示对象

4

3 回答 3

1

不确定您是否仍在寻找答案,但几年前我在一个项目中遇到了这个问题。我们最终切换到HighCharts以实现浏览器兼容性。当时它作为一个图表库还处于起步阶段,从那时起它变得更加强大,并且仍然保持对 IE6 的浏览器支持。

于 2017-02-08T02:42:29.580 回答
0

IE8(据我所知)根本不支持 SVG。我能看到的唯一解决方案是使用不同的图形库,它使用画布来绘制它的组件。想想像CanvasJSChartsJSGoJSVisJS Network Graphs这样的库,然后使用excanvas使它们适用于 IE8。

我在研究这个主题时发现的另一个解决方案是使用 Chrome Frame。它使 IE8 支持 SVG。不过,遗憾的是,Chrome Frame 已退役,不再受支持

了解这一切后,您必须问自己:“对于仍然使用 IE8 及以下版本的不到 0.1% 的人来说,是否值得经历所有这些?”。

因为,如果您想要完全兼容 d3,您可能必须编写自己的从 svg 到 canvas 的转换器,即便如此,您仍然必须希望 excanvas 支持您编写的所有画布功能。

编辑:将浏览器百分比更改为当前 IE8 使用情况

于 2015-12-31T15:15:12.253 回答
0

不幸的是,对于现在支持 IE8 的大多数人来说,它归结为客户端限制而不是消费者。

在不通知那些要求它的人限制、向后兼容性和成本影响以及这篇文章中有价值的链接的情况下,使画布在 IE7/8 中工作并使用 JScharts 变体的解决方案是您的最佳选择。

当然,这意味着不使用 D3,除非您想将工作量翻倍 = 成本。只要记得每次都提到这一点。

祝你好运

于 2017-01-03T09:33:30.267 回答