今天遇到一個(gè)很難受的問題份名,項(xiàng)目要求兼容 IE9,在登錄時(shí)總是有一個(gè)按鈕點(diǎn)擊沒反應(yīng)芥驳,但是只要 f12 開發(fā)調(diào)試工具就好用舟茶,其他的瀏覽器比如 chrome 都沒問題,想了一上午解決方法,問題的關(guān)鍵就是為啥只要打開調(diào)試工具就好使吧凉!
后來在網(wǎng)上查了很多資料隧出,才發(fā)現(xiàn)一個(gè)問題就是在 IE8 / 9 上在不打開調(diào)試工具的情況下window 上是沒有 console 這個(gè)屬性的!在打開調(diào)試工具的時(shí)候會給 window 再掛載上 console 屬性阀捅,所以需要兼容 console 胀瞪。。饲鄙。知道了問題所在就好解決了凄诞,下面貼一下兼容性代碼:
(function() {
var method;
var noop = function () {};
var methods = [
'assert', 'clear', 'count', 'debug', 'dir', 'dirxml', 'error',
'exception', 'group', 'groupCollapsed', 'groupEnd', 'info', 'log',
'markTimeline', 'profile', 'profileEnd', 'table', 'time', 'timeEnd',
'timeline', 'timelineEnd', 'timeStamp', 'trace', 'warn'
];
var length = methods.length;
var console = (window.console = window.console || {});
while (length--) {
method = methods[length];
// Only stub undefined methods.
if (!console[method]) {
console[method] = noop;
}
}
}());
// 注:經(jīng)驗(yàn)證在IE7/8/9下有效。
雖然 IE11 以下的版本離我們越來越遠(yuǎn)忍级,但是瀏覽器的兼容性問題確實(shí)是一場持久戰(zhàn)!