美文网首页
oc和javascript互相调用

oc和javascript互相调用

作者: 一笔春秋 | 来源:发表于2016-08-16 17:46 被阅读27次

    概述:

    使用UIWebView加载页面,使用UIWebView的方法stringByEvaluatingJavaScriptFromString调用javascript的方法。在javascript中使用document.body.appendChild(iFrame)这样的方式唤起UIWebViewDelegate的方法shouldStartLoadWithRequest。通过调用stringByEvaluatingJavaScriptFromString获得javascript中的数据变化。 

    1、oc调用javascript

    创建UIWebView对象,并设置UIWebViewDelegate。

    调用stringByEvaluatingJavaScriptFromString方法,执行javascript中的方法。

    例如:

    webView = [[UIWebView alloc] initWithFrame:CGRectMake(0, 0, 400, 600)];

    webView.delegate = self; [self.view addSubview:webView];[self->webView stringByEvaluatingJavaScriptFromString:@"self.testAction()"];

     2、javascript调用oc代码:

    -(BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType{  

      NSURL* url = [request URL];   

     if ([[url scheme] isEqualToString:kCustomProtocolScheme]) {   

         NSString* test = [self->webView stringByEvaluatingJavaScriptFromString:@"self.testAction()"];       

     if ([test isEqualToString:@"1"]) {

     //此处添加自定义方法       

         return NO;       

     }     

       else     

       {          

          return YES;  

       }   

    }       

     return YES;

    javascript代码:

    var test = '0';

    function call()

    {

    alert("测试开始")

    }

    function testAction()

    {

    return test;

    }

    function js_call_oc()

    {

    var canvas = $$('can');

    var context = canvas.getContext("2d");

    context.clearRect(0,0,400,300);

    var iFrame;

    iFrame = document.createElement("iframe");

    iFrame.setAttribute("src", "ios://jwzhangjie");

    iFrame.setAttribute("style", "display:none;");

    iFrame.setAttribute("height", "0px");

    iFrame.setAttribute("width", "0px");

    iFrame.setAttribute("frameborder", "0");

    document.body.appendChild(iFrame);

    // 发起请求后这个iFrame就没用了,所以把它从dom上移除掉

    iFrame.parentNode.removeChild(iFrame);

    iFrame = null;

    test = "1";

    }

    相关文章

      网友评论

          本文标题:oc和javascript互相调用

          本文链接:https://www.haomeiwen.com/subject/ewbpsttx.html