开发者社区> 黄威的世界> 正文

IE8 的兼容性问题总结

简介:
+关注继续查看

在IE8中,下面的代码报错:

Js代码  收藏代码
  1. $('#invoiceListDot').text(htmlTemplate);  



 

说明:invoiceListDot 是一个script标签 

Html代码  收藏代码
  1. <script id="invoiceListDot" type="text/x-dot-template">  
  2.                {{? it.invoiceInfoDtos}}  
  3.                {{ for(var prop=0;prop  
  4.                <it.invoiceInfoDtos.length  
  5.                        ; prop++){ }}  
  6.                        {{? it.invoiceInfoDtos[prop]}}  
  7.                <div class="{{ if(prop==0 && it.create==true){}}invoice-infor {{ }else {}}no-invoice{{ }}}"  
  8.                     data-index="{{= prop }}">  
  9.                    <span class="no-ivoice-icon"></span>  
  10.                    <span>普通发票</span>  
  11.                    <span class="ivo-margin invoiceType">{{= it.invoiceInfoDtos[prop].content }}</span>  
  12.                    <span class="ivo-margin invoiceCompany">{{= it.invoiceInfoDtos[prop].title }}</span>  
  13.                    <span class="ivo-margin invoiceAddress">{{= it.invoiceInfoDtos[prop].address }}</span>  
  14.                    <span class="ivo-margin invoicePerson">{{= it.invoiceInfoDtos[prop].receiver }}</span>  
  15.                    <span class="ivo-margin invoicePhone">{{= it.invoiceInfoDtos[prop].phone }}</span>  
  16.                </div>  
  17.                {{?}}  
  18.                {{ } }}  
  19.                {{?}}  
  20.            </script>  

 改为如下代码也报错:

Js代码  收藏代码
  1. $('#invoiceListDot').html(htmlTemplate);  

 

这是IE8的兼容性问题.

解决方法:

在js中判断浏览器类型,若是IE8,则执行

Js代码  收藏代码
  1. $('#invoiceListDot').innerHTML = htmlTemplate;  

整个逻辑判断如下:

Js代码  收藏代码
  1. if (getBrowserVersion.isIE8) {  
  2.        $('#invoiceListDot').innerHTML = htmlTemplate;  
  3.    } else {  
  4.        $('#invoiceListDot').text(htmlTemplate);  
  5.    }  

  

 

 获取script标签的内容的时候:

 

Js代码  收藏代码
  1. var tmplate = $invoiceListDot.text();//IE8中返回空字符串  
  2.                    if (!tmplate) {  
  3.                        console.log('$invoiceListDot.text() return null');  
  4.                        tmplate = $invoiceListDot.html();  
  5.                    }  

 

 

 

new Date('2015-08-05 23:12:20')

在chrome中,下面的语法是正确的:

 但是在IE8中不支持,所以增加了判断:

Js代码  收藏代码
  1. if (typeof  window.willEndTime == 'string') {//IE中  
  2.         productInfo2.willEndTime = window.willEndTime;  
  3.     } else {  
  4.         productInfo2.willEndTime = new Date(window.willEndTime).format("yyyy-MM-dd");  
  5.     }  

 

 那么如何判断浏览器是IE8呢?

 

Js代码  收藏代码
  1. /*** 
  2.  * get browser type and browser version and language 
  3.  when page open,the function will be executed automaticly 
  4.  * @param write22 
  5.  * @returns {{systemLanguage,userLanguage,ver}} 
  6.  */  
  7. getBrowserVersion = (function (write22) {  
  8.     var browser = {};  
  9. //    console.dir(navigator);  
  10.     var userAgent = navigator.userAgent.toLowerCase();  
  11.     /*for(osvId in navigator){ 
  12.      var value222=navigator[osvId]; 
  13.      document.writeln(osvId+":&nbsp;"+value222+'<br>'); 
  14.      }*/  
  15.     var lang22 = navigator.language;  
  16. //    document.writeln(userAgent+'<br>');  
  17. //    document.writeln(navigator.appCodeName+'<br>');  
  18.     var s;  
  19.     (s = userAgent.match(/msie ([\d.]+)/)) ? browser.ie = s[1] : (s = userAgent.match(/firefox\/([\d.]+)/)) ? browser.firefox = s[1] : (s = userAgent.match(/chrome\/([\d.]+)/)) ? browser.chrome = s[1] :  
  20.         (s = userAgent.match(/opera.([\d.]+)/)) ? browser.opera = s[1] : (s = userAgent.match(/version\/([\d.]+).*safari/)) ? browser.safari = s[1] : 0;  
  21.     var version = "";  
  22.     if (browser.ie) {  
  23.         version = browser.ie;  
  24.         if (write22 && write22 != false && write22 != 'false') {  
  25.             document.writeln('IE<br>');  
  26.         }  
  27.         if (!browser.lang || browser.lang == undefined) {  
  28.             lang22 = navigator.browserLanguage;  
  29.             browser.systemLanguage = navigator.systemLanguage;  
  30.             browser.userLanguage = navigator.userLanguage;  
  31.         }  
  32.     }  
  33.     else if (browser.firefox) {  
  34.         version = browser.firefox;  
  35.         browser.mozilla = browser.firefox;  
  36.         if (write22 && write22 != false && write22 != 'false') {  
  37.             document.writeln('firefox<br>');  
  38.         }  
  39.     }  
  40.     else if (browser.chrome) {  
  41.         version = browser.chrome;  
  42.         if (write22 && write22 != false && write22 != 'false') {  
  43.             document.writeln('chrome<br>');  
  44.         }  
  45.     }  
  46.     else if (browser.opera) {  
  47.         version = browser.opera;  
  48.         if (write22 && write22 != false && write22 != 'false') {  
  49.             document.writeln('opera<br>');  
  50.         }  
  51.     }  
  52.     else if (browser.safari) {  
  53.         version = browser.safari;  
  54.         if (write22 && write22 != false && write22 != 'false') {  
  55.             document.writeln('Safari<br>');  
  56.         }  
  57.     }  
  58.     else {  
  59.         version = 'unknown browser';  
  60.     }  
  61.     browser.ver = version;  
  62.     if (lang22 && lang22 != undefined) {  
  63.         browser.lang = lang22.toLowerCase();  
  64.     }  
  65.     browser.isIE8 = (browser.ie && (version === '8.0' || version === '8'));  
  66.     return browser;  
  67. })();  

 上述脚本见附件

 使用方法:

Js代码  收藏代码
  1. f (getBrowserVersion.isIE8) {  
  2.         $('#invoiceListDot').innerHTML = htmlTemplate;  
  3.     } else {  
  4.         $('#invoiceListDot').text(htmlTemplate);  
  5.     }  

 

 Ie识别不了有空格的json

 比如

{

"path":"huang wei"

}

 

IE7中动态创建表格时,必须要创建tbody,否则表格不显示

Js代码  收藏代码
  1. var tb = put('table.service');  
  2. if (BrowserVersion.isIE7 || BrowserVersion.isIE6) {  
  3.                 tb=put(tb,'tbody');  
  4.              }  

 

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
精心整理了100+Python字符串常用操作,收藏备用!(下)
精心整理了100+Python字符串常用操作,收藏备用!(下)
8 0
TextView的XML属性说明全析 ---Android基础篇
TextView的XML属性说明全析 ---Android基础篇
10 0
AndroidStudio 设置自动导包
AndroidStudio 设置自动导包
7 0
利用JS筛选数组方法一
利用JS筛选数组方法一
6 0
利用JS筛选数组方法二
利用JS筛选数组方法二
8 0
利用JS实现猜数字小游戏
利用JS实现猜数字小游戏
7 0
Java项目:CRM客户关系管理系统(Spring+SpringMVC+MyBatis + maven)(二)
Java项目:CRM客户关系管理系统(Spring+SpringMVC+MyBatis + maven)(二)
10 0
10行Python代码能做出哪些有趣的事情?
Python 凭借语法的易学性,代码的简洁性以及类库的丰富性,赢得了众多开发者的喜爱。下面我们来看看,用不超过10行代码能实现些什么有趣的功能
15 0
深度学习模型实战-深度学习模型在各大公司实际生产环境的应用讲解文章
建这个仓库的是因为工作之后发现生产环境中应用的模型需要做到速度和效果的平衡,并不是越复杂越好。所以一味的追求新的模型效果不大(并不是不追,也要多看新东西)。学到模型最终是要用,而且要用好,于是就建了这么个仓库,积累一下深度学习模型在各个公司中的应用以及细节,这样在自己工作中可以做到借鉴。主要是罗列一些各大公司分享的文章,涉及到搜索/推荐/自然语言处理(NLP),持续更新... 仓库地址:https://github.com/DA-southampton/Tech_Aarticle/edit/master/README.md
5 0
+关注
黄威的世界
我是一个热衷IT技术的人,希望自己不断地设计开发出对别人非常有用的软件。有近7年的java开发经验(包括2年Android开发经验)和一年左右的linux使用经验。擅长Java Web后台开发 ,喜欢研究新的各种实用技术
668
文章
0
问答
文章排行榜
最热
最新
相关电子书
更多
OceanBase 入门到实战教程
立即下载
阿里云图数据库GDB,加速开启“图智”未来.ppt
立即下载
实时数仓Hologres技术实战一本通2.0版(下)
立即下载