我在使用webview中的過(guò)程中,打開(kāi)一個(gè)頁(yè)面,然后如果有404錯(cuò)誤則顯示錯(cuò)誤頁(yè)面,
在使用過(guò)程中我發(fā)現(xiàn)打開(kāi)一個(gè)頁(yè)面,總共請(qǐng)求了7次,其中有2次請(qǐng)求的資源返回的是404,這就導(dǎo)致了頁(yè)面原本是可以加載的,但是還是顯示了錯(cuò)誤界面。
所以我想請(qǐng)教一下,打開(kāi)一個(gè)http頁(yè)面 并不是只有一次網(wǎng)絡(luò)請(qǐng)求嗎?(不是只會(huì)返回一次200,或404或其他)?
會(huì)有很多次,包括
文檔: html 文件本身
資源: 圖片 視頻 js文件 css文件
數(shù)據(jù): ajax請(qǐng)求
等等
瀏覽器 F12 會(huì)看得很清楚
一個(gè)頁(yè)面包括很多部分,如果你的頁(yè)面中包含圖片、樣式文件和從后端拉取的數(shù)據(jù)等。就不是請(qǐng)求一次了,會(huì)請(qǐng)求很多次。
一般webview判定加載失敗主要是判斷獲取html文檔部分是否是200,加載完成html之后還有很多需要進(jìn)行異步加載的地方,比如獲取css、js、圖片等數(shù)據(jù),重寫(xiě)onLoadResource可以看到加載了哪些資源文件。至于顯示錯(cuò)誤頁(yè)面還需要看服務(wù)器的設(shè)置,有的服務(wù)器會(huì)針對(duì)404、502之類(lèi)的錯(cuò)誤進(jìn)行重定向讓你跳轉(zhuǎn)到指定的頁(yè)面上,而不是webview中自帶的錯(cuò)誤頁(yè)面,這種頁(yè)面一般是服務(wù)器那邊的問(wèn)題,和本機(jī)有沒(méi)有正確響應(yīng)頁(yè)面沒(méi)什么關(guān)系。