WKWebView與Js實戰(OC版)

前言

上一篇專門講解了WKWebView相關的全部類、代理的全部API。那麼本篇講些什麼呢?固然是實戰了!javascript

本篇文章教你們如何使用WKWebView去實現經常使用的一些API操做。固然,也會有如何與JS交互的實戰。css

若是尚未閱讀過WKWebView精講(OC版),請先閱讀,否則有可能看不懂下面所講的內容。html

經過本篇文章,至少能夠學習到:java

  • OC如何給JS注入對象及JS如何給IOS發送數據
  • JS調用alert、confirm、prompt時,不採用JS原生提示,而是使用iOS原生來實現
  • 如何監聽web內容加載進度、是否加載完成
  • 如何處理去跨域問題

建立配置類

在建立WKWebView以前,須要先建立配置對象,用於作一些配置:web

 

配置偏好設置

偏好設置也沒有必須去修改它,都使用默認的就能夠了,除非你真的須要修改它:跨域

配置web內容處理池

其實咱們沒有必要去建立它,由於它根本沒有屬性和方法:ide

配置Js與Web內容交互

WKUserContentController是用於給JS注入對象的,注入對象後,JS端就可使用:函數

來調用發送數據給iOS端,好比:post

AppModel就是咱們要注入的名稱,注入之後,就能夠在JS端調用了,傳數據統一經過body傳,能夠是多種類型,只支持NSNumber, NSString, NSDate, NSArray,NSDictionary, and NSNull類型。學習

下面咱們配置給JS的main frame注入AppModel名稱,對於JS端可就是對象了:

當JS經過AppModel發送數據到iOS端時,會在代理中收到:

全部JS調用iOS的部分,都只能夠在此處使用哦。固然咱們也能夠注入多個名稱(JS對象),用於區分功能。

建立WKWebView

經過惟一的默認構造器來建立對象:

加載H5頁面

配置代理

若是須要處理web導航條上的代理處理,好比連接是否能夠跳轉或者如何跳轉,須要設置代理;而若是須要與在JS調用alert、confirm、prompt函數時,經過JS原生來處理,而不是調用JS的alert、confirm、prompt函數,那麼須要設置UIDelegate,在獲得響應後能夠將結果反饋到JS端:

添加對WKWebView屬性的監聽

WKWebView有好多個支持KVO的屬性,這裏只是監聽loading、title、estimatedProgress屬性,分別用於判斷是否正在加載、獲取頁面標題、當前頁面載入進度:

而後咱們就能夠實現KVO處理方法,在loading完成時,能夠注入一些JS到web中。這裏只是簡單地執行一段web中的JS函數:

WKUIDelegate

與JS原生的alert、confirm、prompt交互,將彈出來的其實是咱們原生的窗口,而不是JS的。在獲得數據後,由原生傳回到JS:

WKNavigationDelegate

若是須要處理web導航操做,好比連接跳轉、接收響應、在導航開始、成功、失敗等時要作些處理,就能夠經過實現相關的代理方法:

JS端代碼

相關文章
相關標籤/搜索