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()); 

 
原文地址:https://www.cnblogs.com/Camier-myNiuer/p/3725384.html