IE9不支援預設不支援
console.log
,但是按
F12
打開開發人員工具視窗就支援了。
這破bug!
起因是為了判斷一個intervalID是否被釋放了,就重寫了window預設的實作
__timeoutlCahceData = {};
window.__setTimeout = window.setTimeout;
window.setTimeout = function (code, delay) {
var ret = window.__setTimeout(code, delay);
__timeoutlCahceData[ret] = ;
return ret;
}
window.__clearTimeout = window.clearTimeout;
window.clearTimeout = function (intervalId) {
window.__clearTimeout(intervalId);
__timeoutlCahceData[intervalId] = -;
}
window.isTimeoutCleared = function (intervalId) {
var ret = __timeoutlCahceData[intervalId] === -;
console.log(intervalId + ": clear status is " + ret)
return ret;
}
寫完自以為挺完美,緊接着遇到BUG,如果這個腳本在檔案中被錯誤的引用多次,那麼就會進入死循環。
這個好解決,隻需要加個判斷即可于是馬上修改:
if(!window.__setTimeoutOverrided) {
window.__setTimeoutOverrided = true;
window.__timeoutlCahceData = {};
window.__setTimeout = window.setTimeout;
window.setTimeout = function (code, delay) {
var ret = window.__setTimeout(code, delay);
window.__timeoutlCahceData[ret] = ;
return ret;
}
window.__clearTimeout = window.clearTimeout;
window.clearTimeout = function (intervalId) {
window.__clearTimeout(intervalId);
window.__timeoutlCahceData[intervalId] = -;
}
window.isTimeoutCleared = function (intervalId) {
var ret = window.__timeoutlCahceData[intervalId] === -;
//console.log(intervalId + ": clear status is " + ret)
return ret;
}
}
運作正常了!
再後來就是遇到console.log和ie9的一些挫折了。。。