Der in diesem Artikel geteilte Inhalt zeigt, wie man die Interaktion zwischen OC und JS erkennt. Er hat einen gewissen Referenzwert.
oc-Code
#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); } }; }
wobei favQues die Funktion ist, die Daten in JS zurückgibt, und obj ist der von JS an OC übergebene Wert.
JS-Code
function QMAction(id, subject, el) { favQues(id,subject,el); }
wobei QMAction die Methode in HTML ist, id, subject, el die übergebenen Parameter und favQues sind ist Die Funktion, die Daten zurückgibt, muss mit der im OC-Code übereinstimmen.
OC-Code
- (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; }
JS-Code
function QMAction(at, id, subject, el) { window.location.href="objc://"+":/"+subject+":/"+id; }
Unter diesen ist objc:// der mit dem Backend ausgehandelte Betreff des benutzerdefinierten Protokoll-Headers und id der von JS an OC übergebene Wert, getrennt durch :/.
Verwandte Empfehlungen:
Interaktion zwischen OC und JS
Interaktion zwischen OC und JS
Das obige ist der detaillierte Inhalt vonSo realisieren Sie die Interaktion zwischen OC und JS. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!