2012-07-08 28 views
1

我遇到了一個問題(我仍然需要修復),我的整個頁面無法加載。它在元素中間被切斷。有沒有任何jQuery的檢測,如果HTML標籤沒有關閉?或頁面沒有完全加載?

是否有使用jQuery或javscript做類似的方式:

如果(某些元素還沒有載入){刷新頁面}

我想的只是把<div id="end_of_page"></div>在底部該頁面,並檢查是否呈現,如果沒有,我會知道出了問題,可以重新加載,再試一次。

謝謝!!

+2

切斷聲音是服務器問題,應該在那裏檢測到。 – Bergi 2012-07-08 21:20:31

+0

你確定這是一個HTML問題嗎?可能會有一些不正確的JavaScript?使用瀏覽器的開發人員工具檢查DOM樹是否存在任何不一致或錯誤。 – Jackson 2012-07-08 21:23:55

回答

1

是否有辦法使用jquery或javscript做類似的事情:

if(某個元素尚未加載){刷新頁面}

可以這樣做,是的。把這個頭部包括jQuery的經過:

<script> 
jQuery(function($) { 
    if (!$("#end_of_page")[0]) { 
     // Something went wrong, load again 
     location.reload(); 
    } 
}); 
</script> 

你會進入循環體(因此,強制重裝)如果end_of_page元素不作爲時,jQuery的ready事件觸發的存在(這意味着當頁面完成加載時)。

但是:更好迄今爲止弄清楚爲什麼你的網頁獲得通過切斷中途和解決。這種解決方法不是解決方案。

+0

感謝您的回答!是的,相信我,我不高興我也必須這樣做! – 2012-07-08 21:48:39

1

您可以使用

$(document).ready(function(){ 
    // code here 
}); 

當頁面加載的代碼纔會運行。方便的簡寫是:

$(function(){ 
    // code here 
}); 

假設你的jQuery對象是$。要完成您的要求,可以在加載函數中設置一個變量,然後使用頁面開始處設置的計時器來檢查它。如果它不在,請重新加載。我個人認爲你應該投入一些時間來計算出爲什麼你的頁面只有一半(Firebug或Chrome Inspector可能會幫你做到這一點,它可能是你的頁面中的一個資源導致它掛起,並且由於大多數HTTP請求每個主機名一次只能創建2個,所以在獲取其他請求之前可能會等待它返回)。

1

可能是一個服務器端的問題OR一些腳本或庫偷你的$(又名:「美元」)。

我寧願建議你調試你的代碼,而不是刷新頁面試圖解決問題。

確保你的腳本是在你的文檔的head
jQuery的 +您的JQ功能結束前右</body>標籤裹着:

(function($){ /*your functions*/ })(jQuery); 
+1

添加到您的答案:在過去,我已經處理了幾兆字節的頁面,爲了改善加載時間,我決定壓縮html - 刪除空格\ t和\ n \ r - 令我驚訝,它減少了頁面大小平均在30%以上,並且改善了加載時間(這是PHP有很多很多無用的垃圾)。 – pedrofurla 2012-07-08 21:28:24