2012-11-02 131 views
0

我試圖通過XHR下載一個網頁,然後在瀏覽器中使用document.write()),但是當我這樣做時,雖然顯示頁面,但jQuery已準備就緒( )函數不執行。如果我直接下載完全相同的頁面,它會執行。是否需要做一些事情才能使頁面通過XHR執行ready()函數?通過XHR的Javascript請求

+1

向我們展示一些代碼 – Bergi

回答

3

不要用document.write()來替換頁面內容,它會流淚。

只要找到合適的頂級元素,並使用.replaceWith()擺脫其現有的內容,包括從XHR檢索到的新的內容,如:

$.get(url, function(html) { 
    $(body).replaceWith($(html).find('body')); 
}); 

注意這不會取代<head> ,也不會執行可能包含在新內容中的任何其他Javascript塊。

您還可以使用​​

$(body).load(url); 
+0

取決於他的使用情況下(雖然我想不出一個好一個,太)。使用'replaceWith',DOMready將絕對不會再次觸發,所以這並不能真正回答他的問題:-) – Bergi

+0

@Bergi我不確定是否有任何解決方案會再次自動啓動DOMReady。 – Alnitak

+0

不是,當然,但從他使用'document.write'我斷定它不會被解僱。然而,如果你加載了jQuery兩次,它可能會再次觸發。 – Bergi