zoukankan      html  css  js  c++  java
  • iPhone 和 iPad的ios 开发中 利用 WebViewJavascriptBridge组件,通过 UIWebView 对Html进行双向通讯

     

    本文转载至 http://blog.csdn.net/remote_roamer/article/details/7261490

     WebViewJavascriptBridge 项目的 官网 

    https://github.com/marcuswestin/WebViewJavascriptBridge

    主要过程:

    1. 下载WebViewJavascriptBridge.h 和 WebViewJavascriptBridge.m文件到自己的项目中,并添加到项目。
    2. 在相应的.h文件中 使用
      #import "WebViewJavascriptBridge.h"
    3. 在相应的.h文件中使用 类别 WebViewJavascriptBridgeDelegate
      1. @interface HtmlViewController : UIViewController<WebViewJavascriptBridgeDelegate>  
    4. 接受 html中js程序传来的消息的方式
      1. 实现如下方法:(delegate 的设置要放入 viewDidLoad方法,而不能放入

        initWithNibName

        方法)

        1. - (void)viewDidLoad  
        2. {  
        3.     self.javascriptBridge = [WebViewJavascriptBridge javascriptBridgeWithDelegate:self];  
        4.     self.webView.delegate = self.javascriptBridge;  
        5.     [super viewDidLoad];  
        6. }  



        1. - (void)javascriptBridge:(WebViewJavascriptBridge *)bridge receivedMessage:(NSString *)message fromWebView:(UIWebView *)webView   
        2. {  
        3.     NSLog(@"MyJavascriptBridgeDelegate received message: %@", message);  
        4. }  
      2. 在html中通过javascript方法发出和接受消息:
        1. document.addEventListener('WebViewJavascriptBridgeReady', function onBridgeReady() {  
        2.                           WebViewJavascriptBridge.setMessageHandler(function(message) {  
        3.                                                                     alert('Received message: ' + message)  
        4.                                                                     })  
        5.                           WebViewJavascriptBridge.sendMessage('Hello from the javascript,发送信息给objc')  
        6.                           }, false)  
    5. objectc 程序发送消息 给 html。
      1. 在程序的业务中,使用如下方法
        1. //发送消息给 html  
        2.    [self.javascriptBridge sendMessage:@"Well hello there,objc 发送消息给 html" toWebView:self.webView];  

    下面这个博客的文章,是没有通过 WebViewJavascriptBridge 组件来进行处理 objectC和 html相互通讯,从原理上会更清晰的帮忙我们理解

    http://wangjun.easymorse.com/?p=1087

    这篇文章 也描述的很详细

    http://blog.csdn.net/cococoolwhj/article/details/7019828

    用这个方法 的时候在js文件里面 如果传出中文。要用到 js里面的 方法encodeURI 来处理一下。否则 xcode 中用 

    NSString* rurl=[[[request URL]  absoluteString]stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];  无法取得中文

     var url="protocol://"+encodeURI($("#textarea").val()); 

     
  • 相关阅读:
    MVC的12种ActionResult介绍以及应用示例【转】
    SQL Server抛出异常信息 RAISERROR
    lambda select和where区别
    JS中的原型对象与构造器
    JS原型的动态性
    关于困惑已久的var self=this的解释
    JS原型对象的问题
    再谈.NET委托(delegate、Func<>)
    在函数作用域嵌套下使用this
    Python 易错点
  • 原文地址:https://www.cnblogs.com/Camier-myNiuer/p/3725384.html
Copyright © 2011-2022 走看看