天天看點

對Win8.1和WP8.1在UniversalAPP中WebView的研究

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事件的回調,進而進行回退的控制。

繼續閱讀