使用Flot和Bootstrap:IE8不兼容?
我试图在Bootstrap项目中使用Flot 。 我发现在IE8中,Flot图是不可见的,我将问题缩小到Bootstrap使用的HTML5垫片 。
这是完整的页面:它是基本的Flot示例加上HTML5垫片,图形在IE8中是不可见的(在Chrome中很好)。
如果我删除HTML5填充线,IE8中的图表就可以了。 但是,我需要用于Bootstrap样式的HTML5填充程序(当我添加Bootstrap时 – 为了本例的目的我已经删除了对它的引用) – 如果它不存在那么Bootstrap样式就变得棘手了。
我能做什么?
Flot Examples $(function () { var d1 = []; for (var i = 0; i < 14; i += 0.5) d1.push([i, Math.sin(i)]); var d2 = [[0, 3], [4, 8], [8, 5], [9, 13]]; var d3 = [[0, 12], [7, 12], null, [7, 2.5], [12, 2.5]]; $.plot($("#placeholder"), [ d1, d2, d3 ]); });
html5shim和excanvas有点做我猜的同样的事情? excanvas模仿html5canvas元素,html5shim做了一些我不太清楚的魔法。 简而言之,当谈到IE <9和canvas元素时,你会想告诉html5shim。 我在源头挖了一下,发现了这个信息。
暴露了
html5
对象,以便可以移除更多元素,并且可以在iframe上检测现有的shiving。
在包含脚本之前可以更改选项html5 = {‘elements’:’mark section’,’shivCSS’:false,’shivMethods’:false};
在它列出所有将要“shiv”d的元素之后不久,所以我想出了这个解决方案:
我从源代码中获取的元素中的巨大列表,仅删除canvas
。
除此之外,我使用了你所有的例子,似乎工作正常。
我在ie8中也遇到了bootstrap和flot的问题,但是无法完全识别OP的问题。 虽然解决问题的方法与Ryley的答案大致相同,但我花了一个小时来理解我需要做些什么来使它工作。
简单解决方案
- 下载excanvas.js (如果它不在您的flot包中。)
- 在我在head标签中加载所有其他javascript文件之前添加条件注释 :
很简单,但是:我通过在IE中调试javascript来启动这条轨道,激活了“break on error”。 这让我得到以下错误消息: 'window.G_vmlCanvasManager' is null or not an object
。 谷歌搜索引导我到excanvas.js。 并且,flot.js突然起作用了。 我不知道这是否与HTML5shim有关,但它有效…并且比Ryley提出的答案更简单。