1. 程式人生 > >JS與OC互相呼叫的一百種方法(包括WKWebView和UIWebView)

JS與OC互相呼叫的一百種方法(包括WKWebView和UIWebView)

/**
 *  根據webView、navigationAction相關資訊決定這次跳轉是否可以繼續進行,這些資訊包含HTTP傳送請求,如頭部包含User-Agent,Accept,refer
 *  在傳送請求之前,決定是否跳轉的代理
 *  @param webView
 *  @param navigationAction
 *  @param decisionHandler
 */
- (void)webView:(WKWebView *)webView decidePolicyForNavigationAction:(WKNavigationAction *)navigationAction decisionHandler:(void (^)(WKNavigationActionPolicy))decisionHandler{
    decisionHandler(WKNavigationActionPolicyAllow);
}

/**
 *  這個代理方法表示當客戶端收到伺服器的響應頭,根據response相關資訊,可以決定這次跳轉是否可以繼續進行。
 *  在收到響應後,決定是否跳轉的代理
 *  @param webView
 *  @param navigationResponse
 *  @param decisionHandler
 */
- (void)webView:(WKWebView *)webView decidePolicyForNavigationResponse:(WKNavigationResponse *)navigationResponse decisionHandler:(void (^)(WKNavigationResponsePolicy))decisionHandler{
    decisionHandler(WKNavigationResponsePolicyAllow);
}

/**
 *  準備載入頁面。等同於UIWebViewDelegate: - webView:shouldStartLoadWithRequest:navigationType
 *
 *  @param webView
 *  @param navigation
 */
- (void)webView:(WKWebView *)webView didStartProvisionalNavigation:(null_unspecified WKNavigation *)navigation{
}

/**
 *  這個代理是伺服器redirect時呼叫
 *  接收到伺服器跳轉請求的代理
 *  @param webView
 *  @param navigation
 */
- (void)webView:(WKWebView *)webView didReceiveServerRedirectForProvisionalNavigation:(null_unspecified WKNavigation *)navigation{

}

- (void)webView:(WKWebView *)webView didFailProvisionalNavigation:(null_unspecified WKNavigation *)navigation withError:(NSError *)error{

}

/**
 *  內容開始載入. 等同於UIWebViewDelegate: - webViewDidStartLoad:
 *
 *  @param webView
 *  @param navigation
 */
- (void)webView:(WKWebView *)webView didCommitNavigation:(null_unspecified WKNavigation *)navigation{

}

/**
 *  頁面載入完成。 等同於UIWebViewDelegate: - webViewDidFinishLoad:
 *
 *  @param webView
 *  @param navigation
 */
- (void)webView:(WKWebView *)webView didFinishNavigation:(null_unspecified WKNavigation *)navigation{

}

/**
 *  頁面載入失敗。 等同於UIWebViewDelegate: - webView:didFailLoadWithError:
 *
 *  @param webView
 *  @param navigation
 *  @param error      
 */
- (void)webView:(WKWebView *)webView didFailNavigation:(null_unspecified WKNavigation *)navigation withError:(NSError *)error{

}

- (void)webViewWebContentProcessDidTerminate:(WKWebView *)webView NS_AVAILABLE(10_11, 9_0){

}

/*
 我們看看WKUIDelegate的幾個代理方法,雖然不是必須實現的,但是如果我們的頁面中有呼叫了js的alert、confirm、prompt方法,我們應該實現下面這幾個代理方法,然後在原來這裡呼叫native的彈出窗,因為使用WKWebView後,HTML中的alert、confirm、prompt方法呼叫是不會再彈出視窗了,只是轉化成ios的native回撥代理方法
 */
#pragma mark - WKUIDelegate

- (void)webView:(WKWebView *)webView runJavaScriptAlertPanelWithMessage:(NSString *)message initiatedByFrame:(WKFrameInfo *)frame completionHandler:(void (^)(void))completionHandler{
    UIAlertController *alertView = [UIAlertController alertControllerWithTitle:@"h5Container" message:message preferredStyle:UIAlertControllerStyleAlert];
//    [alertView addTextFieldWithConfigurationHandler:^(UITextField * _Nonnull textField) {
//        textField.textColor = [UIColor redColor];
//    }];
    [alertView addAction:[UIAlertAction actionWithTitle:@"我很確定" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {
        completionHandler();
    }]];
    [self presentViewController:alertView animated:YES completion:nil];
}

相關推薦

JSOC互相呼叫一百方法(包括WKWebViewUIWebView)

/** * 根據webView、navigationAction相關資訊決定這次跳轉是否可以繼續進行,這些資訊包含HTTP傳送請求,如頭部包含User-Agent,Accept,refer * 在傳送請求之前,決定是否跳轉的代理 * @param webView * @param naviga

iOS下JSOC互相呼叫(三)--MessageHandler

使用WKWebView的時候,如果想要實現JS呼叫OC方法,除了攔截URL之外,還有一種簡單的方式。那就是利用WKWebView的新特性MessageHandler來實現JS呼叫原生方法。 MessageHandler 是什麼? WKWebView 初始

iOS下JSOC互相呼叫(八)--Cordova詳解+實戰

扯兩句,可以跳過 由於專案中Cordova相關功能一直是同事在負責,所以也沒有仔細的去探究Cordova到底是怎麼使用的,又是如何實現JS 與 OC 的互動。所以我基本上是從零開始研究和學習Cordova的使用,從上篇在官網實現命令列建立工程,到工程執行起來,

iOS下JSOC互相呼叫(四)--JavaScriptCore

前面講完攔截URL的方式實現JS與OC互相呼叫,終於到JavaScriptCore了。它是從iOS7開始加入的,用 Objective-C 把 WebKit 的 JavaScript 引擎封裝了一下,提供了簡單快捷的方式與JavaScript互動。 關於JavaScriptCore的使用有兩篇很好的文章:N

iOS下JSOC互相呼叫(六)-->WKWebView + WebViewJavascriptBridge

上一篇文章介紹了UIWebView 如何通過WebViewJavascriptBridge 來實現JS 與OC 的互相呼叫,這一篇來介紹一下WKWebView 又是如何通過WebViewJavascriptBridge 來實現JS 與OC 的互相呼叫的。WKWebView

iOS下JSOC互相呼叫(七)--Cordova 基礎

Cordova 簡介 在介紹Cordova之前,必須先提一下PhoneGap。PhoneGap 是Nitobi軟體公司2008年推出的一個框架,旨在彌補web 和iOS 之間的不足,使得web 和 iPhone SDK 之間的互動更容易。後來又加入了Android SDK 和BlackBerry SDK,再

iOS下CordovaOC互相呼叫

2.設定網頁控制器,新增網頁 首先將 ViewController 的父類改為 CDVViewController。如下圖所示: 這裡分兩種情況,載入本地HTML 和遠端HTML 地址。 ** 載入本地HTML ** 載入本地HTML,為了方便起見,首先

cocos2d-x LuaOC互相呼叫

1. Lua 呼叫OC 先看例子: hello.lua: -- 點選回撥函式 local function notifymenuCallbackTest() local luaoc = require('luaoc') local ok, ret = luaoc.ca

Android Html互動_二_ JSApp互相呼叫

Android Html互動<二> JS與App互相呼叫 @(Android系統原始碼解析)[Android, html] 宣告:轉載請註明出處,知識有限,如有錯誤,請多多交流指正! 場景:html網頁中JS與App相互呼叫,相互傳輸資料

JS區分中英文字元的兩方法: 正則charCodeAt()方法

JS區分中英文字元的兩種方法: 正則和charCodeAt()方法。 正則無疑是最強大的判斷各種條件的方法, 最近也在研習它, 雖然枯燥, 但仍有樂趣. 用它來判斷一個雙位元組的中文字元也是輕而易舉地. 而判斷中文字元,  簡單且執行效率高. regExpForm.onblur=f

js的call() ,apply() 兩方法的區別用法,最白話文的解釋,讓枯燥滾粗!

背景:今天群裡有 妹子(我就不指名道姓嘍)說:百度了一圈calll()函式和apply()函式,感覺還是糊里糊塗然後群裡熱鬧了,各種表情包,各種殷勤,你懂的!正好我前幾天剛又重新翻了一遍 那本 600多

iOS下JS原生OC互相呼叫(總結)

iOS開發免不了要與UIWebView打交道,然後就要涉及到JS與原生OC互動,今天總結一下JS與原生OC互動的兩種方式。 JS呼叫原生OC篇 方式一 第一種方式是用JS發起一個假的URL請求,然後利用UIWebView的代理方法攔截這次請求,然後

iOS下JS原生OC互相呼叫

iOS開發免不了要與UIWebView打交道,然後就要涉及到JS與原生OC互動,今天總結一下JS與原生OC互動的兩種方式。 JS呼叫原生OC篇 方式一 第一種方式是用JS發起一個假的URL請求,然後利用UIWebView的代理方法攔截這次請求,然後再做相應的處理。

iOS開發-JS原生OC互相呼叫之問題總結二

今天繼續給同學們講解JS和OC的互相呼叫,今天給大家還是講解WKWebView中的一些使用,和注意點,廢話不多說直接上程式碼: #pragma mark - WKWebView中的MessageHandler? WKWebView初始化時,有一個引數叫configur

iOS UIWebViewJSOC互相呼叫

最近做的專案中,是用html做的,我這邊直接用iOS原生的UIWebView進行載入顯示,在期間用到了js和OC的互相呼叫,這裡記錄下來      JS呼叫OC方法:         首先,什麼是JS呼叫O

JS實現隨機顏色的3方法顏色格式的轉化

JS實現隨機顏色的3種方法與顏色格式的轉化   隨機顏色和顏色格式是我們在開發中經常要用到的一個小功能,網上相關的資料也很多,想著有必要總結一下自己的經驗。所以這篇文章主要介紹了JS實現隨機顏色的3種方法與顏色格式的轉化,需要的朋友可以參考借鑑,下面來一

ios jsoc原生WKWebView方法注入及互動傳值

    上篇文章中,我們整理了關於WKWebView的詳細使用,包含進度條、獲取web title等等內容,這篇文章我們整理下,專案中,我們可能使用到的oc 與 js 原生互動場景下的使用.如有興趣,

iOS webView的高階用法之JS互動,jsoc的相互呼叫(JavaScriptCore)

重要的事情放前面 github地址:https://github.com/horisea/JSCallOCTest   歡迎star 前言:說起JS互動,很多童鞋會黯然色變,感覺很高深的樣子。大部分小夥伴只知道一種,哪一種我也說說吧。    1.在webView中將要

AndroidJS之間的互相呼叫互動(一)

Android裝置多解析度的問題Android瀏覽器預設預覽模式瀏覽 會縮小頁面 WebView中則會以原始大小顯示Android瀏覽器和WebView預設為mdpi。hdpi相當於mdpi的1.5倍 ldpi相當於0.75倍三種解決方式:1 viewport屬性 2 CS

JS中獲取元素的第二方法

utf display 獲取 重復執行 ecb sed 文檔 練習 elements 1.靜態方法   var oUl = document.getElementById(‘‘); 2.動態方法   document.getElementsByTagName(‘‘);