https://github.com/marcuswestin/WebViewJavascriptBridge
主要过程:
- 下载WebViewJavascriptBridge.h 和
WebViewJavascriptBridge.m文件到自己的项目中,并添加到项目。
- 在相应的.h文件中 使用
#import "WebViewJavascriptBridge.h"
- 在相应的.h文件中使用 类别 WebViewJavascriptBridgeDelegate
- @interface HtmlViewController : UIViewController<WebViewJavascriptBridgeDelegate>
- 接受 html中js程序传来的消息的方式
- 实现如下方法:(delegate
的设置要放入 viewDidLoad方法,而不能放入
initWithNibName
方法)
- - (void)viewDidLoad
- {
- self.javascriptBridge = [WebViewJavascriptBridge javascriptBridgeWithDelegate:self];
- self.webView.delegate = self.javascriptBridge;
- [super viewDidLoad];
- }
- - (void)javascriptBridge:(WebViewJavascriptBridge *)bridge receivedMessage:(NSString *)message fromWebView:(UIWebView *)webView
- {
- NSLog(@"MyJavascriptBridgeDelegate received message: %@", message);
- }
- 在html中通过javascript方法发出和接受消息:
- document.addEventListener(‘WebViewJavascriptBridgeReady‘, function onBridgeReady() {
- WebViewJavascriptBridge.setMessageHandler(function(message) {
- alert(‘Received message: ‘ + message)
- })
- WebViewJavascriptBridge.sendMessage(‘Hello from the javascript,发送信息给objc‘)
- }, false)
- objectc 程序发送消息 给 html。
- 在程序的业务中,使用如下方法
-
- [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());