iT邦幫忙

0

web 頁面loading

web

想請問一下頁面loading效果,通常設計考量大概是如何,等待所有圖片載入?js載入?
圖片跟js有辦法偵測載入進度?

partyyaya iT邦新手 4 級 ‧ 2019-02-12 11:30:30 檢舉
你可以在每一程式區塊放入監測程式,當讀取完自然會進行監測(或動畫)
0
partyyaya
iT邦新手 4 級 ‧ 2019-02-12 11:32:10
看更多先前的回應...收起先前的回應...
Zaku iT邦新手 4 級 ‧ 2019-02-12 16:17:29 檢舉

這樣好像不太準?他完全不偵測物件裡的東西,像是圖片,還有非同步傳輸。頁面一刷近來應該物件滿快就讀進去了,只是可能還沒有完整顯示?

partyyaya iT邦新手 4 級 ‧ 2019-02-12 16:45:06 檢舉

那可能就是瀏覽器渲染問題,不過通常進度條跑完都是代表成功渲染完了
可參考:https://www.testwo.com/blog/6775 中的一個過程

fillano iT邦超人 1 級 ‧ 2019-02-12 16:53:42 檢舉

http://learn.jquery.com/using-jquery-core/document-ready/

依照官方說法,$(window).ready()會等到所有image及iframe都載入才觸發,$(document).ready()只要DOM建構完畢就會觸發,並不會等到所有資源都下載完。

partyyaya iT邦新手 4 級 ‧ 2019-02-12 17:01:57 檢舉

那就將document改成window應該就可以完整看出進度

1
yoching
iT邦高手 1 級 ‧ 2019-02-12 18:09:01

其實目前大多的做法還是依DOM載入為主。要偵測圖片載入會比較麻煩。畢竟,你並不知道它需要的載入時間。

以前類似的東西我也曾做過,大約將我以前的做法給你參考下

1.假動作進度條:
其實就是先用假象微動,讓進度條看起來有在跑。我之前的做法是讓它每秒前進1~3%(隨機值,太快就調低點)。但會先收集所有可能載入的節點。並后分%數比例。微動的前進值最多只到99%。就不會再前進。(要不然還沒跑完就出現100%的載入完成情況也很奇怪)

2.預估值計算:
先找出所有的節點。由其是img的。每個img的節點先計算1~2秒的可能性時間。並切區段。
一般來說,這是我後期在某家相片行做的。因為網頁載入的時間幾乎都是拖在img的載入。所以我就捨棄了dom載入計算。只針對了img去做載入。當時客戶的圖片都是很大的。平均一張圖都是100m起跳。(雖然有思考過做縮圖,但客戶要求不要用縮圖,會失真)

每一頁約至少50張圖。所以我就只針對所有img的load事件,並記錄他的總數量。當然,每張圖為了要求準確度,再一開始我就已經將所有圖片的容量數先行給與js做參數了。所以我依容量及載入的時間下去做計算來產生進度圖的處理。

程式碼的部份,因為那是很早期做的,早就已經不在我手上。現在叫我再用javascript重打的話。
也很懶了。(雖然很想用jquery再寫一套就是了)

就只告知理念吧。有些人說的網站,大多都可以拿來做參考。另外還有「js預載圖」你也可以找找。你會發現很多dom中load的判斷控制。

Zaku iT邦新手 4 級 ‧ 2019-02-13 15:55:59 檢舉

感謝大大我在想想,所以大概主要判斷就是圖片載入:http://otischou.tw/notes/2017/01/01/detect-is-image-loaded.html , 可以用這個之類的。的確如果圖片卡死網站也進不去,似乎不太好

yoching iT邦高手 1 級 ‧ 2019-02-13 16:50:07 檢舉

所以你要做一個秒數控制。一般來說,那個圖片的載入就是利用了無限讀取進度dom來做成的。那邊再用個最大的秒數跳過就行了。
不過我當初倒是沒用在圖片載入中判斷。而是放在loading給個秒數判斷處理。最多5秒。還是會將頁面給顯示出來。
後期則是改成動態式的方式處理。就捨棄了載入中這個控制。因為就如你所說的,如果真遇到圖片載入很慢的情況下,loading的畫面卡很久也怪怪的。

所以我已經很久沒再做loading的處理了。

Zaku iT邦新手 4 級 ‧ 2019-02-14 11:00:04 檢舉

恩其實也不是一定要做,只是看有些網站有做,不知道他們都怎麼設計的。主要是圖片多或大的時候網路又不給力,進去圖片都沒出來版面會看起來怪怪的,體驗不佳

1
淺水員
iT邦新手 4 級 ‧ 2019-02-12 20:57:02

目前我想得到的只有透過 AJAX 取得資源
這樣可以透過 progress 事件計算出進度。
不過這樣做的話,前端要修改載入的資源的方式。
後端要確認有傳送 Content-length 的 Header 提供計算。

如果真的要用,可以挑出大型的檔案用 ajax 。
至於小型的就稍微用估計的即可。

Zaku iT邦新手 4 級 ‧ 2019-02-13 15:58:01 檢舉

好玄居然有這東西,我研究一下感謝大大

我要發表回答

立即登入回答