IE8|IE8 的兼容性问题总结

在IE8中,下面的代码报错:
Js代码IE8|IE8 的兼容性问题总结
文章图片

  1. $('#invoiceListDot').text(htmlTemplate);
【IE8|IE8 的兼容性问题总结】
IE8|IE8 的兼容性问题总结
文章图片


说明:invoiceListDot 是一个script标签
Html代码IE8|IE8 的兼容性问题总结
文章图片
改为如下代码也报错:
Js代码IE8|IE8 的兼容性问题总结
文章图片
  1. $('#invoiceListDot').html(htmlTemplate);

这是IE8的兼容性问题.
解决方法:
在js中判断浏览器类型,若是IE8,则执行
Js代码IE8|IE8 的兼容性问题总结
文章图片
  1. $('#invoiceListDot').innerHTML = htmlTemplate;
整个逻辑判断如下:
Js代码IE8|IE8 的兼容性问题总结
文章图片
  1. if (getBrowserVersion.isIE8) {
  2. $('#invoiceListDot').innerHTML = htmlTemplate;
  3. } else {
  4. $('#invoiceListDot').text(htmlTemplate);
  5. }

IE8|IE8 的兼容性问题总结
文章图片


获取script标签的内容的时候:
IE8|IE8 的兼容性问题总结
文章图片


Js代码IE8|IE8 的兼容性问题总结
文章图片
  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|IE8 的兼容性问题总结
文章图片

但是在IE8中不支持,所以增加了判断:
Js代码IE8|IE8 的兼容性问题总结
文章图片
  1. if (typeofwindow.willEndTime == 'string') {//IE中
  2. productInfo2.willEndTime = window.willEndTime;
  3. } else {
  4. productInfo2.willEndTime = new Date(window.willEndTime).format("yyyy-MM-dd");
  5. }

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

Js代码IE8|IE8 的兼容性问题总结
文章图片
  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+":  "+value222+'
    ');
  14. }*/
  15. var lang22 = navigator.language;
  16. //document.writeln(userAgent+'
    ');
  17. //document.writeln(navigator.appCodeName+'
    ');
  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
    ');
  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
    ');
  38. }
  39. }
  40. else if (browser.chrome) {
  41. version = browser.chrome;
  42. if (write22 && write22 != false && write22 != 'false') {
  43. document.writeln('chrome
    ');
  44. }
  45. }
  46. else if (browser.opera) {
  47. version = browser.opera;
  48. if (write22 && write22 != false && write22 != 'false') {
  49. document.writeln('opera
    ');
  50. }
  51. }
  52. else if (browser.safari) {
  53. version = browser.safari;
  54. if (write22 && write22 != false && write22 != 'false') {
  55. document.writeln('Safari
    ');
  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代码IE8|IE8 的兼容性问题总结
文章图片
  1. f (getBrowserVersion.isIE8) {
  2. $('#invoiceListDot').innerHTML = htmlTemplate;
  3. } else {
  4. $('#invoiceListDot').text(htmlTemplate);
  5. }

Ie识别不了有空格的json
比如
{
"path":"huang wei"
}

IE7中动态创建表格时,必须要创建tbody,否则表格不显示
Js代码IE8|IE8 的兼容性问题总结
文章图片
  1. var tb = put('table.service');
  2. if (BrowserVersion.isIE7 || BrowserVersion.isIE6) {
  3. tb=put(tb,'tbody');
  4. }

    推荐阅读