2010-02-02 63 views
1

我想從另一個頁面嵌入一個數字。遠程調用很小(只返回一個數字),但我希望頁面在請求結束時繼續加載。我應該怎麼做?我目前正在做Javascript嵌入的代碼不會暫停頁面呈現

<span id="target">Loading ...</span> 
<script> 
var cb = function(data) { 
    document.getElementById("target").innerHTML = data; 
} 
</script> 
<script src="http://webnumbr.com/webnumbrs.latest.json(callback=cb)"></script> 

我打開客戶端或服務器端的變化。只是最低的客戶端代碼中嵌入更好

回答

1

「官方」建議(請參閱rules)將所有JavaScript放在HTML文件的最底部。每個標記的內容將在渲染繼續之前進行評估,因爲腳本的結果可能會影響進一步的渲染(請參考document.write())。

+0

好吧,我給用戶一些嵌入代碼,所以讓他們把一塊他們想要的嵌入,而另一個在底部似乎不是很好... – 2010-02-02 08:11:17

0

我相信你正在使用AJAX來加載在加載當前頁面的其他頁面的內容,請確保您的AJAX調用是異步,並更新「webNumbr_webnumbrs」僅在成功完成後才進行控制。

+0

我應該如何確保它是異步的?我真的不想實例化一個XMLHTTPRequest對象,因爲它會使客戶端代碼非常大。 – 2010-02-02 08:09:48

1

老實說,

我認爲最好的辦法可能是簡單地把它放在一個onLoad()指令,以便它不會加載,直到文檔已完全呈現。這與Tom的回答類似,但在這種情況下,您將消除您遇到的大部分DOM問題。

+0

這是支持?在'onLoad'上做我的功能?我一直害怕那個標籤,因爲它感覺不對...... – 2010-02-02 08:10:42

+0

它完全支持並推薦用於某些事情。任何會干擾頁面渲染的事情,或者需要在啓動之前完全渲染頁面是放入onLoad語句的好主意。 http://www.w3schools.com/jsref/event_onload.asp – jerebear 2010-02-02 10:58:05

+0

有很少的元素支持'onLoad()'。我可以做'window.onLoad = function(){// stuff}'嗎? – 2010-02-04 00:23:52