zoukankan      html  css  js  c++  java
  • iOS中js与objective-c的交互(转)

    因为在iOS中没有WebKit.Framework这个库的,所以也就没有 windowScriptObject对象方法了。要是有这个的方法的话
    就方便多了,(ps:MacOS中有貌似)
    现在我们利用其他方法去达到js与objective-c的交互效果。
    首先是objective-c调用js中的代码,可以用uiwebview中的一个方法
    stringByEvaluatingJavaScriptFromString:后面接的是js中的方法名。这个函数的返回值就是所调用js方法
    的返回值。
    而在js调用objective-c的方法就没那么简单了,
    在js中的代码应该这么做:
    function testFunc(cmd,parameter1)
    {
    alert(1);
    document.write(Date());
    document.location="objc://"+cmd+":/"+parameter1; //cmd代表objective-
    c中的的方法名,parameter1自然就是参数了
    }
    而在objective-c中,也是利用uiwebview的一个方法,
    - (BOOL)webView:(UIWebView*)webView shouldStartLoadWithRequest:
    (NSURLRequest*)request navigationType:
    (UIWebViewNavigationType)navigationType //这个方法是网页
    中的每一个请求都会被触发的
    {
    NSString *urlString = [[request URL] absoluteString];
    NSArray *urlComps = [urlString
    componentsSeparatedByString:@"://"];
    if([urlComps count] && [[urlComps objectAtIndex:0]
    isEqualToString:@"objc"])
    {
    NSArray *arrFucnameAndParameter = [(NSString*)[urlComps
    objectAtIndex:1] componentsSeparatedByString:@":/"];
    NSString *funcStr = [arrFucnameAndParameter objectAtIndex:0];
    if (1 == [arrFucnameAndParameter count])
    {
    // 没有参数
    if([funcStr isEqualToString:@"doFunc1"])
    {
    /*调用本地函数1*/
    NSLog(@"doFunc1");
    }
    }
    else if(2 == [arrFucnameAndParameter count])
    {
    //有参数的
    if([funcStr isEqualToString:@"doFunc1"] &&
    [arrFucnameAndParameter objectAtIndex:1])
    {
    /*调用本地函数1*/
    NSLog(@"doFunc1:parameter");
    }
    }
    return NO;
    };
    return YES;
    }
    这个方法是可以达到js调用本地objective-c的方法,可惜没办法把返回值返回给js,所以还是要绕过
    stringByEvaluatingJavaScriptFromString:这个弯,用
    stringByEvaluatingJavaScriptFromString:函数去掉js的方法,把返回值当做js方法中的参数形式传回去给
    js。
  • 相关阅读:
    ntohs, ntohl, htons,htonl的比较和详解
    转 linux socket的select函数例子
    转 结构体中字节对齐问题(转载)
    C语言中volatile关键字的作用
    转 字符串模式匹配算法——BM、Horspool、Sunday、KMP、KR、AC算法
    转 常见hash算法的原理
    转 从头到尾彻底解析Hash表算法
    [CEOI2020 D2T1 / CF1403A] 权力药水The Potion of Great Power 题解
    [CEOI2020 D1T3 / CF1402C] 星际迷航Star Trek 题解
    [CEOI2020 D1T2 / CF1402B] 道路Roads 题解
  • 原文地址:https://www.cnblogs.com/taintain1984/p/3684928.html
Copyright © 2011-2022 走看看