Win8.1和WP8.1在UniversalAPP中WebView的研究
1. 正常載入一個頁面的回調過程
1.1ContentLoading->DOMContentLoaded->NavigationCompleted->LoadCompleted
1.2從ContentLoading開始載入Body的資源。
1.3如果html裡面有frame,則流程變為:
ContentLoading->FrameNavigationStarting->DOMContentLoaded->FrameContentLoading-> Frame NavigationCompleted->NavigationCompleted->LoadCompleted
2.Navigate方式有3種
2.1NavigateToLocalStreamUri(Uri,IUriToStreamResolver)2.1.1該方法能夠接管webview所需要通路的資源,但是http開頭的資源,是接管不到的。隻要實作IUriToStreamResolver可以用代碼對資源進行控制。
2.1.2 支援Package和Local的檔案擷取
2.2.Navigate(Uri)
目前其使用的Uri支援appx-web,appdata協定,也可以直接是url。2.2.1 appx-web協定
從程式包裡面讀資源檔案,html檔案中的資源的路徑可以是絕對路徑,也可以是相對路徑,webview可以識别。
2.2.2 appdata協定
①從應用本地目錄中擷取,格式為”ms-appdata:///local/+目錄”。
②該協定下如果用2.2的接口,則必須要将html需要的資源和html檔案放在同一個檔案夾下,html的資源路徑不管是不是”/”開頭,webview都認為是相對路徑。
③如果html中要的本地檔案,如果在對應目錄中不存在,wp上會直接跳出應用,大概過1分鐘左右崩潰,且捕獲不到異常。Win上沒有這現象。
④不支援js的window.exteranl.notify功能
2.3 NavigateToString()
2.4 NavigateWithHttpRequestMessage(HttpRequestMessage)
2.5 性能
主要對2.1和2.2做了性能測試,取一篇離線文章做跳轉100次(即1.中的過程100次),
機關(ms) Win8(我的mac) Wp(630) 2.1方式 102931 68200 2.2方式 108729 49118
3. wp下按回退鍵直接跳出應用的解決方案
Page下的按鍵回調通路不到,需要在頁面上添加
Windows.Phone.UI.Input.HardwareButtons.BackPressed事件的回調,進而進行回退的控制。