zoukankan      html  css  js  c++  java
  • 基于WebView的混合编程

    近日公司需求变更,以前一个页面是后台返回HTML字段,然后我们直接用webView接收,现在新增一个页面,数据后台返回非HTML,页面跟前面一直,所幸自己会点HTML,所以偷了个懒,自己用代码把数据组装成了一个THML,直接调用以前的UI,节省了一些工作,但是,这个组装HTML的过程却不是那么简单,所以网上搜索了一写资料,可以简化这部分工作。

    一、模板引擎渲染HTML

    1.GRMustache模板引擎渲染HTML

      a.创建模板文件如下:

      <HTML>

        <HEAD> </HEAD>

        <BODY>

          <h1>{{name}}</h1>

          <p>{{content}}</p>

        </BODY>

      </HTML>

    这只是一个最简单的模板,你可以在这个文件中加入各种HTML元素标签等,{{参数名}}代替后面传进来的参数,这个参数名必须与后面穿参的字典中保持一致

    2.代码中读取这个模板文件

    NSString *template = [NSString stringWithCntentsOfFile:.....]

    3.使用GRMustache的renderObject方法生成渲染后的HTML文件

    NSDictionary *valueDic = @{@"name":@"标题", @"content":@"内容:HTML渲染模板"};

    注意:此处字典的key值与上面的模板中的参数对应

    NSString *htmlstr = [GRMustacheTemplate renderObject:valueDic fromeString:template error:nil];

    4.这时候就可以直接用webView接收这个渲染后的HTML字符串了

    二、OC与JS语言相互调用

    1.OC语言调用JS语言

    通过UIWebView的stringByEvaluatingJavaScriptFromString方法可以实现,该方法可以向UIWebView传入一段需要执行的JS代码,然后获得执行结果

    2.JS调用OC语言

    并没有原生的API,我们知道webView的代理方法中shouldStartLoadWithRequest会捕获webView跳转下一个页面,我们可以让H5在页面点击某个按钮的时候,发出一个你们定义规范的一个URL通过代理捕获解析(eg:  test://goToPage?pageID=1),从而自己定义跳转原生页面,或者其他操作。

  • 相关阅读:
    Java 正则表达式
    Java 设计模式系列(二三)访问者模式(Vistor)
    Java 设计模式系列(十五)观察者模式(Observer)
    Java 设计模式系列(十八)备忘录模式(Memento)
    Java 设计模式系列(二十)状态模式
    Java 设计模式系列(十五)迭代器模式(Iterator)
    Java 设计模式系列(十三)模板方法
    Java 设计模式系列(十二)策略模式(Strategy)
    Java 设计模式系列(二二)责任链模式
    Java 设计模式系列(十四)命令模式(Command)
  • 原文地址:https://www.cnblogs.com/liuluoxing/p/5846495.html
Copyright © 2011-2022 走看看