奥非域

JavaScript调用oc函数,与uiwebview互动

JavaScript调用oc函数,与uiwebview互动

项目》Build Phases》Link Binary With Libraries添加JavaScriptCore.framework的引用


#import <JavaScriptCore/JavaScriptCore.h>
在uiwebview的加载完成事件中添加jscontext的定义
- (void)webViewDidFinishLoad:(UIWebView *)_webView

…

JSContext *context =
 [webView valueForKeyPath:@"documentView.webView.mainFrame.javaScriptContext"];
   context[@"tianyan"] = ^() {
       NSLog(@"+++++++Begin Log+++++++");
       NSArray *args = [JSContext currentArguments];
       for (JSValue *jsVal in args) {
           NSLog(@"%@", jsVal);
       }
       JSValue *this = [JSContext currentThis];
       NSLog(@"this: %@",this);
       NSLog(@"-------End Log-------");
   };
   //[context evaluateScript:@"log('ider', [7, 21], { hello:'world', js:100 });”];
JSContext *context2 =
 [webView valueForKeyPath:@"documentView.webView.mainFrame.javaScriptContext"];
   context2[@“login"] = ^(int n) {
       NSLog(@“参数是:%d”,n);
   };

网页内容:

<a href="javascript:tianyan();”> 点击调用</a>

<a href="javascript:login(123);">点击调用带参数</a>

IOS