이 글에서 공유한 내용은 OC와 JS 간의 상호 작용을 구현하는 방법에 대한 특정 참고 가치가 있습니다. 도움이 필요한 친구가 참조할 수 있습니다.
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); } }; }
여기서 favQues는 JS에서 데이터를 반환하는 함수이고, obj는 JS에서 OC로 전달되는 값입니다.
JS 코드
function QMAction(id, subject, el) { favQues(id,subject,el); }
여기서 QMAction은 HTML의 메소드, id, subject, el은 전달된 매개변수이고 favQues는 데이터를 반환하는 함수입니다. 이는 OC 코드의 데이터와 일치해야 합니다.
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; }
여기서 objc://는 백엔드와 협상된 사용자 정의 프로토콜 헤더 주제이고 id는 JS가 OC에 전달한 값이며 다음으로 구분됩니다. 열려 있는.
관련 권장 사항:
위 내용은 OC와 JS 간의 상호 작용을 구현하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!