我正在處理需要自動加載內容並將其插入頁面開頭而不影響頁面垂直滾動位置的項目。插入內容,計算其高度,然後將其添加到頁面的滾動位置對我來說目前爲止已經奏效,但現在我遇到了如果存在圖像時無法獲得正確高度的問題(可能是因爲這些圖像天堂尚未裝入)。如何在將內容插入頁面之前加載圖像,以便在插入時計算正確的高度?還是有更好的方法去做這件事?在渲染之前加載所有AJAX內容(包括圖像)
一些供參考(簡化)代碼:
$.ajax({
type: "POST",
url: post_url,
dataType: "json",
data: post_data,
success: function(data, stat, jqXHR) {
if (data.content.length) {
var updates = build_content(data.content);
$(updates).insertAfter("#" + id + " .reload_button");
// Works if there's no external content
$("#" + id).scrollTop($("#" + id).scrollTop() + $(updates).height());
}
}
});
更新:
(...)
var updates = build_posts(data.response.posts).hide();
$(updates).insertAfter("#" + id + " .reload_button");
console.log("Waiting for DOM to load completely @ " + new Date().getTime());
updates.ready(function() {
console.log("Done @ " + new Date().getTime());
$(updates).show();
(...)
這是我一直在使用.load()等待直到完全加載的內容嘗試顯然加載了相同的毫秒,它插入了內容,這不可能是正確的,因爲它也必須加載圖像。我在這裏犯了一個明顯的錯誤嗎?
更新:使用.load而不是.ready只會導致回調函數永遠不會運行。該文件說,它是越野車,並可能不會被稱爲如果圖像緩存的瀏覽器,但我不知道這是否真的發生了什麼。
我試圖做到這一點,但load()回調在插入和隱藏內容之後調用的時間少於一毫秒。更多細節在我原來的職位。 – Fraxtil