我一直在大部分時間都面臨以下問題,並且已經取得了絕對零的進展,所以我認爲我會伸手去看看是否有人有一些想法(幫幫我!!!)。我目前正在將jQuery 1.7.2與IE9結合使用,並且正在調用一個簡單的$ .ajax調用,它只是簡單地檢索一些HTML。該HTML隨後插入一個div如下:jQuery 1.7.2 IE9 ajax調用未清除丟棄的元素
$("#viewContent").html(content);
完全相關的jQuery代碼如下所示:
var request = $.ajax({
url: loadUrl,
type: "GET",
cache: false,
data: {command: "loadView", recordid: contextId},
dataType: "html",
error: function (xhr, ajaxOptions, thrownError) {
getViewManager().setMode("ERROR");
handleError(xhr.status, thrownError);
$("#viewContent").parent().removeClass("ajaxLoading");
}
});
request.done(onLoadViewSuccess);
var onLoadViewSuccess = function(content) {
$("#viewContent").parent().removeClass("ajaxLoading");
for(var i=0;i<100;i++) {
$("#viewContent").html(content);
}
content = null;
}
現在,作爲對這個問題,你會發現我已經插內容100次,for循環僅用於誇大攀登內存(通過IE的Drip內存分析器觀察),並且(隨着IE保留的DOM節點總數)攀升。內容是不是一個問題,因爲我有一個靜態空字符串替換它和它的onLoadViewSuccess 函數中同樣的事情:
var onLoadViewSuccess = function(content) {
$("#viewContent").parent().removeClass("ajaxLoading");
for(var i=0;i<100;i++) {
$("#viewContent").html("<div/>");
}
content = null;
}
即每一滴Ajax調用後穩步攀升將展示100個新的DOM節點記憶。現在,爲什麼這似乎被什麼東西了Ajax調用,如果我調用相同的方法在初始頁面加載:
$(document).ready(function() {onLoadViewSuccess("<div/>")});
我沒有看到相同的行爲(即調用HTML(」 < div/>「)for循環中的每次迭代都正確地清除IE9中被替換的DOM節點,而不是創建100個新節點,並將它們全部保存在內存中......我已經回顧了幾個IE和jQuery的ajax功能,但唯一接近的話題似乎與較早的IE版本有關,後者在之前的jQuery版本中已經得到解決......
我懷疑我錯過了一些基本的東西,因爲這似乎是這樣一個瑣碎的用例,通常當我無法通過谷歌找到任何類似的主題時,它的10倍中有9次是由於我的愚蠢造成的。
我忘了添加,Chrome和FF沒有顯示相同的行爲(當然) – JAMES 2012-07-08 03:37:03