iOS Object-CとJavaScriptの相互呼び出しの詳細


要約:
本論文では主にiOSのOCコードとウェブページの相互作用について説明します.
1.第三者コントロールでWebView JavascriptBridge
2.iOSで生まれたstrigByEveraluating JavaScript FroomString
1.第三者コントロールでWebView JavascriptBridge
a.初期化し、webviewとWebView JavascriptBridgeを関連付ける:
    [WebViewJavascriptBridge enableLogging];
    
    _bridge = [WebViewJavascriptBridge
               bridgeForWebView:webView
               webViewDelegate:self
               handler:^(id data, WVJBResponseCallback responseCallback) {
                   NSLog(@"ObjC received message from JS: %@", data);
                   responseCallback(@"Response for message from ObjC");
               }];
この時あなたのwebviewはjsと橋に乗りました.次は方法の相互調整とパラメータの相互転送です.
b.JavaScript呼び出しoc:
[_bridge registerHandler:@"showTabbar" handler:^(id data, WVJBResponseCallback responseCallback) {
        [weakSelf showTabbar];
    }];
そうしたら、JavaScriptはocのshowTabar方法を呼び出すことができます.ここではshowTabbarという方法の表示に注意します.JavaScriptの名前はiosと同じです.この方法に変えられます.もちろんこの名前は両方でカスタマイズできます.
c.oc呼び出しJavaScript:
NSDictionary *data = @{@"classId":@(self.selectedClassId), @"imgUrl":destiniationPath};
    [_bridge callHandler:@"updateClassImage" data:data responseCallback:^(id response) {
        NSLog(@"updateClassImage responded: %@", response);
    }];
ここのudateClass Image
方法の表示です.
この方法では、データを通じて値を送ることができ、レスポンスによってjsの戻り値を受け入れることができます.コードの中にはウェブページのローカル画像のアドレスがあります.このようにして、ローカル画像をウェブページに転送することができます.画像データを直接送るなら、まずbase 64符号化してdataでウェブページに送ることができます.
2.iOSで持参する方法
a.JavaScript呼び出しoc:
javascriptCore.frame ewarkを使って、もちろん、プロジェクトの中で先にこのフレームを添加します.そしてこのフレームを使うクラスの中でinclude
#import <JavaScriptCore/JavaScriptCore.h>
JSContext *context = [self.webview valueForKeyPath:@"documentView.webView.mainFrame.javaScriptContext"];
    context[@"log"] = ^() {
        NSArray *args = [JSContext currentArguments];
        for (JSValue *jsVal in args) {
            NSLog(@"%@", jsVal);
        }
        JSValue *this = [JSContext currentThis];
        NSLog(@"this: %@",this);
    };
JSContext*context=[self.webview valueForKeyPath]@
UICWebviewのJavascript実行環境を取得する.上記の状況を元に、ブロックでのコードと方法を実行します.
b.oc呼び出しJavaScript:
so easy
[webView stringByEvaluatingJavaScriptFromString:@"javascript:JSFunc()"];
これはJavaScriptのJSFunc関数を呼び出します.