zoukankan      html  css  js  c++  java
  • 让IE8支持HTML5及canvas功能!chart.js图表绘制工具库IE8上兼容方案

    第一步,我们加上对html5的支持。

    <!--[if IE]>
        <script src="/public/html5.js" type="text/javascript"></script>
    <![endif]-->

    现在再看,会出现一个黑漆漆的框框,说明IE8已经认识canvas标签了。但红圈圈还是没出来,下面状态栏仍然提示我们JS里压根没取到canvas。这说明IE还只是认识了canvas是个合法标签而已,至于怎么处理它,对不起,俺还不会。

    第二步,加上对canvas的支持。

    下载excanvas_r3.zip,解压后,把excanvas.compiled.js拷贝到自己的目录里,引用它。现在看看,哈,一个红色圈圈出现了!js works!

    <!--[if IE]>
        <script type="text/javascript" src="/public/html5.js"></script>
        <script type="text/javascript" src="/public/excanvas.compiled.js"></script>
    <![endif]-->


    如果您足够细心,您会发现,样式表中存在这么两行:

        border-radius: 20px;
        box-shadow: 0 0 40px #222;

    这是CSS3的样式哦!border-radius说明我们要的黑框框四周应该是圆角才对,但现在却四愣八插的;box-shadow那儿还有shadow呢。。。

    下面是第三步,让IE支持CSS3。在cv选择器的最后,增加一句话

    behavior: url(/public/ie-css3.htc);
    复制代码
    #cv {
        width: 600px; height: 400px;
        background: #000;
        border-radius: 20px;
        padding: 20px;
        margin: 20px auto;
        box-shadow: 0 0 40px #222;
        behavior: url(/public/ie-css3.htc);}
    复制代码

    其中,ie-css3.htc去 http://fetchak.com/ie-css3/ 下载,具体它能够支持多少CSS3特性,网站说的很清楚,我就不费口舌了。

    推荐的兼容方法无效?

    在Bootcss.com网站中有一个基于HTML5的图表绘制工具chart.js,比较简单实用,简略的看了下中文文档,发现有对IE8及以下浏览器的支持,遂放入项目中开始。当功能做完,依照文档中给出的方法对IE8进行兼容,却发现毫无效果,顿时傻眼。

    搜寻问题!

    于是去网上搜了很多资料也无果,去查兼容方案excanvas.js为什么会有问题,找出了一些蛛丝马迹。excanvas虽然通过VML使IE8支持了Canvas,但是还是有一些问题:动态生成的Canvas不支持getContext(),DrawImage方法能用Canvas对象作为首参数,不支持fillText等方法等等。

    问题出在fillText

    于是我逐一对照检查了这些问题,果然,在chart.js中使用了fillText方法来绘制字符,从而导致无法绘制。知道了问题所在了,离成功也就不远了。于是在网上查找了添加fillText的方法。添加后,还是不行,对照excanvas的例子,发现需要在onload中设置一个方法去执行。果然成功了!

    附上源代码:替换掉标准的excanvas.js即可,其他文件仅作示例使用(chart.js在IE8下的动画效果会比较慢,建议在IE8下关闭动画)

    https://github.com/warmsheep/my-example/tree/master/OtherExample/chart

     http://geek.warmsheep.com/post/2013-11-13/40060099890

  • 相关阅读:
    常见协议及默认的端口号
    超级简单的防止表单重复提交
    Spring的IOC和AOP的作用
    通向财富自由之路一
    AngularJS2.0的特性
    Charles设置断点
    JMeter参数化之csv data set config常见的错误
    Jmeter的几种参数化方式
    java中关于String对象的解析
    题目2:数组中重复的数字
  • 原文地址:https://www.cnblogs.com/zjhs/p/3651743.html
Copyright © 2011-2022 走看看