今天看一下在Objective-C(以下簡稱OC)中使用JavaScript(以下簡稱js)代碼,以及JS中對OC代碼的調用。
在OC中使用js的場景是,手機端需要顯示一個網頁文件,網頁文件中嵌入的js代碼,我們想要通過OC代碼來處理或者多網頁進行操作。
OC中使用UIWebView控件來加載網頁請求。
1.OC調用JS
我們在OC中使用JS代碼一般是希望通過OC代碼對網頁上進行操作。這個操作相對比較簡單,只需要把原生的js代碼拿來執行就可以了。這里需要使用webView的一個方法。用它來執行js代碼
[self.webView stringByEvaluatingJavaScriptFromeString:@"js代碼"];
OC代碼調用js代碼就僅有這一種方法使用。如果你需要對網頁進行處理,可以把處理的js代碼現在上述代碼@“”里面 通過OC方法來觸發就可以了。
2.js調用OC
js調用OC的場景就是當我們在webView上點擊某個按鈕或者鏈接等我們需要OC來進行響應,比如打開一個新的控制器,彈出一個提示窗口等。
在webView上當我們點擊一個請求鏈接的時候webView回通知他的代理 并且把我們想要請求的地址傳過去。
在上面這個代理方法中我們可以攔截到我們的請求內容 request中會返回請求的信息。
我們實現的思路是 在html代碼中自定義協議。當我們在webView上觸發了自定義的協議請求時候我們在 webView的代理方法中進行攔截,然后判斷請求協議是不是我們自定義的。如果是那我們就攔截下來然后進行自定義的處理。這個時候我們就可以把webView上觸發的事件通過webView代理方法的攔截,把事件的響應交付給OC代碼來處理。
當我們點擊其中的一個 顯示一個控制器的時候 webView的代理方法會接收到一個請求協議。我們通過攔截判斷如果是自定義的協議 就去執行準備好的OC方法 即可進行頁面的彈出控制器處理。
以上就是JS和OC的簡單相互使用。再復雜的操作也是可以通過這個基礎原理來實現的,如果您有更好的解決辦法或者處理思路,歡迎回復郵件zihanvip520@163.com.我期待著您的郵件。