JS 와 OC 의 상호 전송 값

4488 단어
/ / webView 에 html 파일 을 불 러 옵 니 다. NSURL * url = [[NSBundle mainBundle] URLForResource: @ "oc 와 js" withExtension: @ "html"];self.webView.delegate = self; [self.webView loadRequest:[NSURLRequest requestWithURL:url]];
-(BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType{
NSLog(@"====%@ ====%@===%@",[request URL],request,[[request URL] scheme]);
NSURL *url = [request URL];

NSString *urlStr = [url absoluteString];
if([urlStr containsString:@"file"]){
    
    NSLog(@"  ");
}else{
    
    NSLog(@"   ");
}

/ / JS OC 에 값 전달 방법 1: 인자 재단 if ([url scheme] isEqualToString: @ "firstclick 12"]) {
    NSArray *params = [url.query componentsSeparatedByString:@"&"];
    NSMutableArray *temArray = [NSMutableArray arrayWithCapacity:0];
    for (NSString *parmStr in params) {
        
        NSArray *contentArray = [parmStr componentsSeparatedByString:@"="];
        if(contentArray.count>1){
            
            //  
            NSString *decodeValue = @"";
            if([[[UIDevice currentDevice]systemVersion]floatValue]<9.0){
                
                decodeValue = [contentArray[1] stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
            }else{
                
                decodeValue = [contentArray[1] stringByAddingPercentEncodingWithAllowedCharacters:[NSCharacterSet URLQueryAllowedCharacterSet]];
            }
            [temArray addObject:decodeValue ];
            
            
        }
    }
    
    NSLog(@"tempDic:%@",temArray);
    
    return NO;
    
}
return YES;

}
  • (void) webViewDidFinishLoad: (UIWebView *) webView {NSLog (@ "실 행 했 습 니 다"); self. jsContext = [webView valueForKeyPath: @ "documentView. webView. main Frame. avaScriptContext"]; / / 오류 정보 self. jsContext. exceptionHandler = ^ (JScontext * context, JSValue * exception Value) {context. exception = exception Value; NSLog (@ "이상 정보:% @", exceptionValue); };
  • NSLog(@"=====%@",webView.request.URL.absoluteString);
    //OC JS  
    [self call];
    [self changeColor];
    
    //JS OC   -->            
    self.jsContext[@"loadURL"] = ^(){
        
        NSArray *array = [JSContext currentArguments];
        for (NSString *string  in array) {
            
            NSLog(@"string12======%@",string);
            
        }
    
    };
        
    
    
    
    self.jsContext[@"Show"] = ^(){
        
        NSArray *array = [JSContext currentArguments];
        for (NSString *string  in array) {
            
            NSLog(@"string======%@",string);
        }
    };
    self.jsContext[@"share"] = ^(){
        
        NSArray *args = [JSContext currentArguments];
        for (JSValue *jsVlu in args) {
            
            NSLog(@"jsVlu.toString====%@",jsVlu.toString);
        }
        dispatch_async(dispatch_get_main_queue(), ^{
            
            UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"   " message:@"  OC      " delegate:self cancelButtonTitle:@"  " otherButtonTitles:nil];
            [alertView show];
            
            
        });
        
        
        
    };
    //       
    NSString *htmlNum = @"document.getElementById('isInApp').value";
    NSString *numHtmlInfo = [webView stringByEvaluatingJavaScriptFromString:htmlNum];
    

    NSLog(@"numHtmlInfo====%@",numHtmlInfo); NSString *str = @"document.getElementById('isInApp').value='flase';"; [self.webView stringByEvaluatingJavaScriptFromString:str];
    NSString *allHtml = @"document.documentElement.innerHTML";
    NSString *allHtmlInfo = [webView stringByEvaluatingJavaScriptFromString:allHtml];
    

    // NSLog(@"=====%@",allHtmlInfo);
    NSString *numHtmlInfo1 = [webView stringByEvaluatingJavaScriptFromString:htmlNum];
    

    // NSLog(@"numHtmlInfo====%@",numHtmlInfo1);
    }
  • (void) call {/ / 이후 js 를 되 돌 리 는 방법 Callback 에서 내용 을 JSValue * Callback = self. js Context [@ "Callback"]; / / 웹 엔 드 에 값 을 전달 합 니 다 [Callback callWithArguments: @ [@ "강 홍", @ "15757166458"];}
  • (void) changeColor {/ / 이후 js 를 되 돌 리 는 방법 Callback 은 JSValue * Callback = self. js Context [@ "changeColor"]; / / 웹 엔 드 에 값 을 전달 합 니 다 [Callback callWithArguments: @ [@ "red"]];}
  • 좋은 웹페이지 즐겨찾기