2012-04-22 127 views
4

我在HTML5中有一個WebApp。異步加載網頁

這裏是link

我想異步加載整個網頁。就像訪問網頁時一樣,我想向用戶顯示一個加載圖像,並且頁面在後臺完全以異步模式加載。我試圖加載腳本異步,但它並沒有太大的影響它的行爲。

有沒有一種方法,這是可能的!

回答

1

嘗試使用與Tobias Krogh建議的相同方法。

但是,而不是將在#main內容通過使用普通的舊JS

document.body.innerHTML = request.responseText; 

使用jQuery把內容在體內使用的.html()

$("body").html(request.responseText); 

編輯: 並使用JS加載器加載CSS。 可能的LazyloadYepNope,以加載它們異步。 這應該做的工作!

+0

工作過,但仍然遇到腳本問題 – 2012-04-22 18:40:52

2

呈現一個空的身體,只有具有收納圖像作爲背景組...的頭你有一個腳本標籤,做對DOM準備一個Ajax調用並加載所需的內容......

編輯:當然期望的內容應包含所需要每隔標記和腳本標籤......然後與響應更新身體

document.body.innerHTML = request.responseText; 

編輯2:我建議寫頭腳本本地JavaScript,你只需要更少< 1kb使一個乾淨的(甚至跨瀏覽器ajax工作)調用一個定義的url ...在你的ajax響應你可以s沒有任何東西會被覆蓋或加載兩次(除了可能的阿賈克斯功能,如果你加載庫)

+1

我試過這個!但問題是內容正在顯示,但腳本沒有在頁面上運行 – 2012-04-22 13:15:15

+0

因此,該應用程序只是不再工作 – 2012-04-22 13:24:14

0

你可以設法通過設置某種疊加與加載器在你的CSS是可見的(在第一次)和以後後您的網頁完全加載,去除覆蓋與JavaScript編程(淡出出來)...

像這樣的事情http://jsfiddle.net/6Ldyd/

當然,你應該做出某種回調函數的最後一個元素之後,除去覆蓋您的頁面已加載(或在加載最後一個元素後調用它的腳本)

+0

但這又必須預先加載所有元素,所以它仍然會很慢。通過ajax加載主體肯定是一個更好的選擇。 – gopi1410 2012-04-22 11:24:37

+0

如果您將css文件放置在頁面頂部(html文件)以及頁面底部的腳本中,只要瀏覽器收到響應數據的第一個KB,就會渲染覆蓋div。因此,用戶將在覆蓋圖上看到加載器,並等待其餘腳本/ html加載。 – drinchev 2012-04-22 11:31:37