zoukankan      html  css  js  c++  java
  • Mac Webview OC与JS交互实现

    1、首先,需要定义一个JS可识别的变量(如external)用于OC与JS交互

    - (void)webView:(WebView *)sender didClearWindowObject:(WebScriptObject *)windowObject forFrame:(WebFrame *)frame
    {
        [self.windowScriptObject setValue:self forKey:@"external"];
    }

    2、JS调用OC代码

    第一步、在OC中声明对JS开放的函数,如下:

    + (BOOL)isSelectorExcludedFromWebScript:(SEL)selector {  
      
        if ( selector == @selector(Login:password:)) {  
            return NO;  
        }  
        return YES;  
    }  

    第二步、建立名称索引

    + (NSString *) webScriptNameForSelector:(SEL)sel {  
      
        if (sel == @selector(Login:password:)) {  
            return @"Login";  
        }  
        return nil;  
    } 

    这样,在JS中只要使用external.Login(account,password)就是调用OC中的[self Login:account password:password]。

    3、OC调用JS的函数

    - (id)callWebScriptMethod:(NSString *)name withArguments:(NSArray *)arguments;
    - (void)callWebScriptMethod:(NSString *)name withArguments:(NSArray *)arguments{
        
        if (arguments.count == 0
            || arguments == nil)
        {
            return;
        }
        
        @try {
            dispatch_async(dispatch_get_main_queue(), ^{
                [self.windowScriptObject callWebScriptMethod:name withArguments:arguments];
            });
            
        }
        @catch (NSException *exception) {
            NSLog(@"ex=%@",exception);
        }
        
    }

    4、OC执行JS代码

    方法一、调用WebScriptObject的方法

    - (id)evaluateWebScript:(NSString *)script;

    方法二、调用Webview的方法

    - (NSString *)stringByEvaluatingJavaScriptFromString:(NSString *)script;

    5、如何调试Webview

    [[NSUserDefaults standardUserDefaults] setBool:TRUE forKey:@"WebKitDeveloperExtras"];
  • 相关阅读:
    ACM Red and Black
    ACM Wooden Stricks
    ACM Strange fuction
    ACM pie
    ACM Doing Homework again
    ACM FatMouse' Trade
    ACM 今年暑假不AC
    ACM Ignatius and the Princess II
    一、数组---第三大的数
    一、数组---移动零※※※※※※
  • 原文地址:https://www.cnblogs.com/yongbufangqi1988/p/8463378.html
Copyright © 2011-2022 走看看