iOS Object-CとJavaScriptの相互呼び出しの詳細
2548 ワード
要約:
本論文では主にiOSのOCコードとウェブページの相互作用について説明します.
1.第三者コントロールでWebView JavascriptBridge
2.iOSで生まれたstrigByEveraluating JavaScript FroomString
1.第三者コントロールでWebView JavascriptBridge
a.初期化し、webviewとWebView JavascriptBridgeを関連付ける:
b.JavaScript呼び出しoc:
c.oc呼び出しJavaScript:
方法の表示です.
この方法では、データを通じて値を送ることができ、レスポンスによってjsの戻り値を受け入れることができます.コードの中にはウェブページのローカル画像のアドレスがあります.このようにして、ローカル画像をウェブページに転送することができます.画像データを直接送るなら、まずbase 64符号化してdataでウェブページに送ることができます.
2.iOSで持参する方法
a.JavaScript呼び出しoc:
javascriptCore.frame ewarkを使って、もちろん、プロジェクトの中で先にこのフレームを添加します.そしてこのフレームを使うクラスの中でinclude
UICWebviewのJavascript実行環境を取得する.上記の状況を元に、ブロックでのコードと方法を実行します.
b.oc呼び出しJavaScript:
so easy
本論文では主に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関数を呼び出します.