兼容性

  • 原因

    我在使用chart.js的时候碰到不少IE8的兼容性问题,其中包括动画问题 #29 。
    chart.js官方文档推荐使用Modernizr来进行浏览器特性检测,进而决定是否显示动画。

    使用方法

    下载

    Modernizr可以检测很多浏览器的特性,在它的官网可以随意勾选你所需要的检测特性,然后生成js文件,比如这次我只需要检测canvas,所以大概这样。
    2016-02-29 6 57 44

    使用

    引入了modernize.custom.js文件之后,如果要检测某个特性,只需要这样。

     if (Modernizr.awesomeNewFeature) {
        console.log('this feature suppor

  • 原因

    IE8和IE9在实现跨域请求的时候使用XDomainRequest自己实现了一套,所以即使是使用jquery1.9.1版本也无法直接兼容IE8,IE9的跨域请求。StackOverflow上的两个问答说得很清楚。

    1. http://stackoverflow.com/questions/24206782/ajax-call-not-working-in-ie8
    2. http://stackoverflow.com/questions/3362474/jquery-ajax-fails-in-ie-on-cross-domain-calls#11267937

    解决方案

    1. 自己抽象定义一个a

  • 原因

    项目中要用到数据可视化,我选择了Chart.js,确实挺好用的。但是因为Chart.js是用canvas实现的,IE8及以下不支持canvas。官方给出的解决方案在这里。
    2016-02-27 11 27 32

    Attention!

    1. chartjs初始化必须在页面刚刚加载的时候完成

    如果只是引入excanvas的话,在IE8中还是没法工作。

    Initialise charts on load rather than DOMContentReady when using the library, as sometimes a race condition will occur, and it will result i


  • 起因

    在做项目的时候发现ie8不兼容Array.prototype.forEach方法,找到了两个解决方案,jquery.each和es5-shim

    解决方案

    1. jquery.each

    $.each(array, function(key, value){
       // array[key] === value;
    });
    

    2. es5-shim

    第二种解决方案是检测是否有这个方法,如果没有,自定义它,es5-shim帮我们做好了这个事情。

    安装

    bower install es5-shim --save

    使用

    <script src="./es5-shim.js"></s
  • 问题

    placeholder属性是html5的新属性,IE9及以下不支持。
    2016-02-27 11 05 14

    解决办法

    github上有很多placeholder的解决方案,我尝试了Placeholders.js。

    使用方法

    安装

    bower install placeholders --save
    

    使用

    <script src="{path}/placeholders.min.js"></script>
    

    Bug

    按照作者给的上述方法,在IE8下会出现这样的bug:首次加载页面的时候可以显示placeholder,但是再次刷新的时候却不能显示了。
    我在这个issue找到了解决方案。

    // 在页面加载