本人喜欢在谷歌浏览器下用控制台输出调试信息,当我在把程序在IE8下运行时直接就不动了,打开调试界面。程序立马正常运行。晕了好久。也找不到问题。最后上网查到.ie8在运行时没有控制台对象,当打开调试界面时才会创建主机对象,这也就解释了为什么我打开调试程序就好了的原因。既然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));
代码是复制的,不知道在哪里复制的了。我也不知道什么规则。如果有需要联系我。(好烦啊,我为什么要打这段?)