objective-c invoke javascript object and function

 

1>.先设置委托:WebFrameLoadDelegate

 

   设置Javascript  foo 对象的值。

  1. - (void)webView:(WebView *)sender windowScriptObjectAvailable:(WebScriptObject *)windowScriptObject
  2.     NSString *myFoo = @"zczhustring";
  3.     [windowScriptObject setValue:myFoo forKey:@"foo"]; //foo is javascript varible

2.调用Javascript函数function addImage(string){}

  1. 调用javascript函数
  2. -(void)callJavaScriptFun
  3. {
  4.     WebView *myWebView;
  5.     WebScriptObject * win = [myWebView windowScriptObject];
  6.     NSArray *args = [NSArray arrayWithObjects:@"zzczzc",nil]; //arguments,参数
  7.     //函数调用不返回
  8.     [win callWebScriptMethod:@"addImage" withArguments:args];
  9.     //函数调用后返回
  10.     id rvalue= [win evaluateWebScript:@"addImage('zzczzc')"];
  11.     NSLog(@"%@", rvalue);
  12. }

3>.JavaScript invoke objectiove-c method

javascript调用自己的一个函数:-(id)setJSvalue:(NSString *)str;

 

  1. a)
  2. - (void)webView:(WebView *)sender windowScriptObjectAvailable:(WebScriptObject *)windowScriptObject
  3. {
  4.       //set method key 
  5.      [windowScriptObject setValue:self forKey:@"setJSvalue"];
  6. }

 

    1. b)在主线程类中重载如下函数
    2. ///重载 
    3. + (BOOL)isSelectorExcludedFromWebScript:(SEL)selector
    4.     return NO; 
    5. }
    6. + (BOOL)isKeyExcludedFromWebScript:(const char *)property {
    7.     if (strcmp(property, "name") == 0) {
    8.         return NO;
    9.     }
    10.     return YES;
    11. }
    12. + (NSString *)webScriptNameForSelector:(SEL)sel
    13. {
    14.     if (sel == @selector(bar:))
    15.         return @"bar";
    16.     if (sel == @selector(setJSvalue:))
    17.         return @"setJSvalue";
    18.     return nil;
    19. }
    2>.javascript中如此调用:
  1. document.write("call  objective-c function<br>");
  2. var myjs = window.setJSvalue;
  3. string = "argument";
  4. var name = myjs.setJSvalue_(string);
  5. document.write("call  objective-c function<br>");

最后:objective-c 与 javascript 函数对应规则:

Objective –C 函数                    javascript 调用函数名应该为

Objective-C selector

Default script name for selector

setFlag:

setFlag_

setFlag:forKey:withAttributes:

setFlag_forKey_withAttributes_

propertiesForExample_Object:

propertiesForExample$_Object_

set_$_forKey:withDictionary:

set$_$$_$_forKey_withDictionary_

 

余下问题:

     如果要调用其他类的方法,却不成功。待续。。。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值