ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

兼容低版本ie

2021-07-27 17:32:34  阅读:165  来源: 互联网

标签:case jsonObj return 低版本 getConsoleFn 兼容 result console ie


ie8 不支持

console

JSON

 

解决

if (!window.JSON) {
  window.JSON = {
    parse: function (jsonStr) {
      return eval('(' + jsonStr + ')');
    },
    stringify: function (jsonObj) {
      var result = '',
        curVal;
      if (jsonObj === null) {
        return String(jsonObj);
      }
      switch (typeof jsonObj) {
        case 'number':
        case 'boolean':
          return String(jsonObj);
        case 'string':
          return '"' + jsonObj + '"';
        case 'undefined':
        case 'function':
          return undefined;
      }

      switch (Object.prototype.toString.call(jsonObj)) {
        case '[object Array]':
          result += '[';
          for (var i = 0, len = jsonObj.length; i < len; i++) {
            curVal = JSON.stringify(jsonObj[i]);
            result += (curVal === undefined ? null : curVal) + ",";
          }
          if (result !== '[') {
            result = result.slice(0, -1);
          }
          result += ']';
          return result;
        case '[object Date]':
          return '"' + (jsonObj.toJSON ? jsonObj.toJSON() : jsonObj.toString()) + '"';
        case '[object RegExp]':
          return "{}";
        case '[object Object]':
          result += '{';
          for (i in jsonObj) {
            if (jsonObj.hasOwnProperty(i)) {
              curVal = JSON.stringify(jsonObj[i]);
              if (curVal !== undefined) {
                result += '"' + i + '":' + curVal + ',';
              }
            }
          }
          if (result !== '{') {
            result = result.slice(0, -1);
          }
          result += '}';
          return result;

        case '[object String]':
          return '"' + jsonObj.toString() + '"';
        case '[object Number]':
        case '[object Boolean]':
          return jsonObj.toString();
      }
    }
  };
}

// 兼容ie8
window._console = window.console;//将原始console对象缓存
window.console = (function (orgConsole) {
  return {//构造的新console对象
    log: getConsoleFn("log"),
    debug: getConsoleFn("debug"),
    info: getConsoleFn("info"),
    warn: getConsoleFn("warn"),
    exception: getConsoleFn("exception"),
    assert: getConsoleFn("assert"),
    dir: getConsoleFn("dir"),
    dirxml: getConsoleFn("dirxml"),
    trace: getConsoleFn("trace"),
    group: getConsoleFn("group"),
    groupCollapsed: getConsoleFn("groupCollapsed"),
    groupEnd: getConsoleFn("groupEnd"),
    profile: getConsoleFn("profile"),
    profileEnd: getConsoleFn("profileEnd"),
    count: getConsoleFn("count"),
    clear: getConsoleFn("clear"),
    time: getConsoleFn("time"),
    timeEnd: getConsoleFn("timeEnd"),
    timeStamp: getConsoleFn("timeStamp"),
    table: getConsoleFn("table"),
    error: getConsoleFn("error"),
    memory: getConsoleFn("memory"),
    markTimeline: getConsoleFn("markTimeline"),
    timeline: getConsoleFn("timeline"),
    timelineEnd: getConsoleFn("timelineEnd")
  };
  function getConsoleFn(name) {
    return function actionConsole() {
      if (typeof (orgConsole) !== "object") return;
      if (typeof (orgConsole[name]) !== "function") return;//判断原始console对象中是否含有此方法,若没有则直接返回
      return orgConsole[name].apply(orgConsole, Array.prototype.slice.call(arguments));//调用原始函数
    };
  }
}(window._console));

 

标签:case,jsonObj,return,低版本,getConsoleFn,兼容,result,console,ie
来源: https://www.cnblogs.com/tingying/p/15067074.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有