JQuery1.4+ Ajax IE8 內(nèi)存泄漏問題
更新時間:2010年10月15日 18:18:42 作者:
將JQuery1.2.6升級到JQuery1.4,有幾天下班沒有關(guān)閉ajax輪詢網(wǎng)頁,第二天早上來,內(nèi)存耗盡,發(fā)現(xiàn)此內(nèi)存泄漏在IE6上不存在(IE7未測試),IE8上存在
并且JQuery1.3.2版本不存在,JQuery1.4+版本存在
通過對比,最終找到這兩個版本的其中一個差別
JQuery1.4+在ajax方法增加了一段代碼,用于在abort時調(diào)用onreadystatechange方法
try {
var oldAbort = xhr.abort;
xhr.abort = function() {
if ( xhr ) {
oldAbort.call( xhr );
}
onreadystatechange();
};
} catch(e) { }
經(jīng)查,正是此段賦值產(chǎn)生了錯誤
onreadystatechange的readyState為4,即成功時,將xhr.abort銷毀
內(nèi)存泄漏解決
另:如果直接xhr.abort=null,不知道為什么在IE6下會報錯
只好try…catch一下,反正IE6不修正錯誤與不會有問題
此項問題在IE8中有問題的原因不明
可能是xhr.abort與oldAbort產(chǎn)生了一個閉包?
但為什么IE6不泄漏?
通過對比,最終找到這兩個版本的其中一個差別
JQuery1.4+在ajax方法增加了一段代碼,用于在abort時調(diào)用onreadystatechange方法
復(fù)制代碼 代碼如下:
try {
var oldAbort = xhr.abort;
xhr.abort = function() {
if ( xhr ) {
oldAbort.call( xhr );
}
onreadystatechange();
};
} catch(e) { }
經(jīng)查,正是此段賦值產(chǎn)生了錯誤
onreadystatechange的readyState為4,即成功時,將xhr.abort銷毀
內(nèi)存泄漏解決
另:如果直接xhr.abort=null,不知道為什么在IE6下會報錯
只好try…catch一下,反正IE6不修正錯誤與不會有問題
此項問題在IE8中有問題的原因不明
可能是xhr.abort與oldAbort產(chǎn)生了一個閉包?
但為什么IE6不泄漏?
您可能感興趣的文章:
相關(guān)文章
jQuery使用hide()、toggle()函數(shù)實現(xiàn)相機品牌展示隱藏功能
這篇文章主要介紹了jQuery使用hide()、toggle()函數(shù)實現(xiàn)相機品牌展示隱藏功能,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-01-01
jQuery Easyui加載表格出錯時在表格中間顯示自定義的提示內(nèi)容
這篇文章主要介紹了jQuery Easyui加載表格出錯時在表格中間顯示自定義的提示內(nèi)容的相關(guān)資料,需要的朋友可以參考下2016-12-12
jquery插件star-rating.js實現(xiàn)星級評分特效
Bootstrap Star Rating是一個簡單而強大的jQuery插件實現(xiàn)星級分數(shù)評級。支持像分數(shù)星填充和RTL輸入先進的功能。在利用純CSS-3造型使控制重點開發(fā)。該插件使用引導標記和造型默認情況下,但它可以覆蓋與其他任何CSS的標記。2015-04-04

