关于ie8浏览器的兼容性解决方案

1.ie6-ie8中不支持opacity透明度的解决方法:

  filter:progid:DXImageTransform.Microsoft.Alpha(opacity=70);

2.ie8下json.stringify()乱码:

  ie8内置了json对象,用以处理json数据。与标准方法不同的是,ie8的JSON.stringify会 把utf-8字符转码:

   一般情况下,我们是在向服务器发送数据时,才会调用这个方法。服务器端可以正常解析,所以没有什么问题。但是如果我们jsonstr还要用在别的地方,那就需要做一些处理。

(1)var pass=eval(‘(’+jsonstr+‘)’);

但是,当我们对str调用了不止一次的话,这样的方法还行吗:

 var str = '我是程序员'

    var jsonstr = JSON.stringify(str)

    var another_jsonstr =JSON.stringify(jsonstr) //

    var another_parsed =eval('('+another_jsonstr+')')

    another_parsed//""\u6211\u662f\u7a0b\u5e8f\u5458""

事实证明是不行的,那么我们写一个方法,如果发现解析的结果有utf-8码,就认为该字符串未解析完全,继续调用eval解析:

  function IE8parse(json) {

        var re = /\\u[0-9A-Fa-f]{4}/,

            result

        result = eval('(' + json + ')')

        while (re.test(result)) {

            result = eval('(' + result + ')')

        }

        return result

    }

  IE8parse(another_jsonstr) //"我是程序员"

另一种方法是把IE8的JSON.stringify方法做一些处理,把它转化后的字符串中的utf-8码转化回字符,注意,由于utf-8是可变长度编码,所以当遇到非单字节字符时,这种解析方式会出问题(目前测试只在IE8中会出现,例如“\uD842\uDFB7”,对应的汉字为 "??",IE8解析为空字符串)。

        function stringify1(object){

        var string = JSON.stringify(object)

        returnstring.replace(/\\u([0-9a-fA-F]{2,4})/g,function(string,matched){

            returnString.fromCharCode(parseInt(matched,16))

        })

        }

       document.write(stringify1(pySegSort(['白鸽', '麻雀', '大象', '狗', '猫', "鸡"])));

3.ie8不支持trim:

   var s = "  abc ";

           if(String.prototype.trim) {

                 document.write("支持trim");

           } else {

                 document.write("不支持trim");

                 String.prototype.trim =function() {

 

                      returnthis.replace(/^\s*|\s*$/g, "");

                 }

           }

           document.write(s.trim());

4.innerHTML属性大多数浏览器支持,innerTEXT outerHTML outerTEXT属性只有ie支持

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值