Cet article partage avec vous comment réaliser l'interaction entre OC et JS. Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer
code oc
#import <JavaScriptCore/JavaScriptCore.h>
- (void) webViewDidFinishLoad:(UIWebView *)webView{ JSContext *context = [webView valueForKeyPath:@"documentView.webView.mainFrame.javaScriptContext"]; context[@"favQues"] = ^{ NSArray *a = [JSContext currentArguments]; for (id obj in a) { NSLog(@"obj:%@",obj); } }; }
où favQues est la fonction qui renvoie les données en JS, et obj est la valeur transmise par JS à OC.
Code JS
function QMAction(id, subject, el) { favQues(id,subject,el); }
où QMAction est la méthode en HTML, id, subject, el sont les paramètres transmis et favQues is La fonction qui renvoie les données doit être cohérente avec celle du code OC.
Code OC
- (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType{ NSString *requestUrlStr = [[request.URL absoluteString] stringByRemovingPercentEncoding]; if ([requestUrlStr hasPrefix:@"objc://"]) { NSArray *a = [requestUrlStr componentsSeparatedByString:@"://"]; NSString *paramStr = a[1]; NSArray *a1 = [paramStr componentsSeparatedByString:@":/"]; if (a1.count > 0) { NSLog(@"%@-%@",a1[1],a1[2]); }else{ NSLog(@"没有参数"); } return NO; } return YES; }
Code JS
function QMAction(at, id, subject, el) { window.location.href="objc://"+":/"+subject+":/"+id; }
Parmi eux, objc:// est le sujet d'en-tête de protocole personnalisé négocié avec le backend et id est la valeur transmise à OC par JS, séparée par :/.
Recommandations associées :
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!