兼容低版本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));
低版本ie窗口通讯
https://freecontent.manning.com/wp-content/uploads/window-postmessage-alternatives-for-legacy-browsers.pdf