2012-04-18 11 views
5

我正在尝试在Bootstrap项目中使用Flot。我发现在IE8中,Flot图形是不可见的,我已经将问题缩小到由Bootstrap使用的HTML5 shim使用Flot和Bootstrap:IE8不兼容?

下面是完整的页面:它是basic Flot example加上HTML5垫片,并且该图形在IE8中不可见(Chrome中很好)。

如果我删除了HTML5填充线,IE8中的图表就没有问题。然而,我需要HTML5 Shim来使Bootstrap样式起作用(当我添加Bootstrap时 - 我已经删除了用于此示例的引用) - 如果它不存在,那么Bootstrap样式会变得棘手。

我该怎么办?

<!DOCTYPE html><html lang="en"> 
    <head> 
    <meta charset="utf-8"> 
    <title>Flot Examples</title> 
    <!--[if lt IE 9]> 
     <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script> 
    <![endif]--> 
    <!--[if lte IE 8]><script language="javascript" type="text/javascript" src="/scripts/plugins/excanvas.min.js"></script><![endif]--> 
    <script language="javascript" type="text/javascript" src="/scripts/jquery-1.7.1.min.js"></script> 
    <script language="javascript" type="text/javascript" src="/scripts/plugins/jquery.flot.js"></script> 
</head> 
<body> 
<div id="placeholder" style="width:100%;height:300px;"></div> 
<script type="text/javascript"> 
$(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 ]); 
}); 
</script> 
</body> 
</html> 
+0

在IE7和8中,图表对我来说没问题,但我不知道引导程序中包含哪个垫片。你可以发布一个演示与垫片和bootstrap包括看看? – 2012-04-18 12:45:47

回答

7

html5shim和excanvas有点做同样的事情我猜? excanvas模拟html5 canvas元素,而html5shim做了一些我不太清楚的其他魔法。简而言之,当涉及IE < 9和canvas元素时,你会想告诉html5shim。我在source找到了一些信息。

html5物体曝光,使得更多的元件可以shived和 现有shiving可以在内部框架被检测到。
选项可以在脚本之前被更改 包含 html5 = {'elements':'mark section','shivCSS':false, 'shivMethods':false};

很快它列出了将被“毒刃”的所有因素后d,所以我想出了这个作为一个解决方案:

<!--[if lt IE 9]> 
    <script type="text/javascript"> 
    var html5 = { 'elements': 'abbr article aside audio bdi data datalist details figcaption figure footer header hgroup mark meter nav output progress section summary time video' }; 
    </script> 
    <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script> 
<![endif]--> 

中的元素巨人名单我拿出源作为好吧,只能删除canvas

除此之外,我用你的所有例子,它似乎工作正常。

+0

这绝对是太棒了,谢谢! – Richard 2012-04-19 11:41:52

+0

感谢理查德&赖利......我有同样的问题,这节省了我很多调试时间,我怀疑! – randlet 2012-04-24 15:30:25

+0

你应该得到这个答案的啤酒,你完成疯狂调试的一天:) – 2014-07-10 14:32:28

1

我也遇到了引导和在ie8 flot问题,但不能完全确定OP的问题。尽管解决问题的方式与Ryley的解答大致相同,但花了一个小时才明白我需要做些什么才能使其工作。

简单的解决方案:

  1. Download excanvas.js(如果它不是在你的海军报包。)
  2. 添加conditional comment之前,我加载头标记所有其他的JavaScript文件:<!--[if IE 8]> <script src="@Url.Content("~/Scripts/canvas/excanvas.min.js")" type="text/javascript"></script> <[endif]-->

非常简单,但:我通过在IE中调试javascript,激活了“break on error”,从而获得了该轨道。这让我以下错误消息:'window.G_vmlCanvasManager' is null or not an object。谷歌搜索导致我excanvas.js。和pronto,flot.js突然工作。我不知道这与HTML5shim有什么关系,但是它可以工作......并且比Ryley提出的答案简单。