其他分享
首页 > 其他分享> > 兼容低版本ie

兼容低版本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