iPhone 和 iPad的ios 开发中 利用 WebViewJavascriptBridge组件,通过 UIWebView 对Html进行双向通讯
本文转载至 http://blog.csdn.net/remote_roamer/article/details/7261490
WebViewJavascriptBridge 项目的 官网
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)
- 实现如下方法:(delegate 的设置要放入 viewDidLoad方法,而不能放入
- objectc 程序发送消息 给 html。
- 在程序的业务中,使用如下方法
- //发送消息给 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());
iPhone 和 iPad的ios 开发中 利用 WebViewJavascriptBridge组件,通过 UIWebView 对Html进行双向通讯的更多相关文章
- iOS开发中的4种数据持久化方式【二、数据库 SQLite3、Core Data 的运用】
在上文,我们介绍了ios开发中的其中2种数据持久化方式:属性列表.归档解档.本节将继续介绍另外2种iOS持久化数据的方法:数据库 SQLite3.Core Data 的运 ...
- iOS开发中图片方向的获取与更改
iOS开发中 再用到照片的时候 或多或少遇到过这样的问题 就是我想用的照片有横着拍的有竖着排的 所以导致我选取图片后的效果也横七竖八的 显示效果不好 比如: 图中红圈选中的图片选取的是横着拍 ...
- ios 开发中 动态库 与静态库的区别
使用静态库的好处 1,模块化,分工合作 2,避免少量改动经常导致大量的重复编译连接 3,也可以重用,注意不是共享使用 动态库使用有如下好处: 1使用动态库,可以将最终可执行文件体积缩小 2使用动态库, ...
- IOS开发中UI编写方式——code vs. xib vs.StoryBoard
最近接触了几个刚入门的iOS学习者,他们之中存在一个普遍和困惑和疑问,就是应该如何制作UI界面.iOS应用是非常重视用户体验的,可以说绝大多数的应用成功与否与交互设计以及UI是否漂亮易用有着非常大的关 ...
- iOS开发中的4种数据持久化方式【一、属性列表与归档解档】
iOS中的永久存储,也就是在关机重新启动设备,或者关闭应用时,不会丢失数据.在实际开发应用时,往往需要持久存储数据的,这样用户才能在对应用进行操作后,再次启动能看到自己更改的结果与痕迹.ios开发中, ...
- iOS开发中关于UIImage的知识点总结
UIImage是iOS中层级比较高的一个用来加载和绘制图像的一个类,更底层的类还有 CGImage,以及iOS5.0以后新增加的CIImage.今天我们主要聊一聊UIImage的三个属性: image ...
- 怎样实现IOS开发中的数据存储方式
iOS 开发中,一般有如下几种数据存储方式.需要根据具体的业务场景,选择 合适的数据存储方式. (1) 用户默认设置 – 这种情况通常不需要用户干预,如游戏通关信息,Video 播放记录,或者 Ap ...
- iOS开发中UIPopoverController的使用详解
这篇文章主要介绍了iOS开发中UIPopoverController的使用,代码基于传统的Objective-C,需要的朋友可以参考下 一.简单介绍 1.什么是UIPopoverController ...
- 总结iOS开发中的断点续传那些事儿
前言 断点续传概述 断点续传就是从文件赏赐中断的地方重新开始下载或者上传数据,而不是从头文件开始.当下载大文件的时候,如果没有实现断点续传功能,那么每次出现异常或者用户主动的暂停,都会从头下载,这样很 ...
随机推荐
- JAVA常见算法题(七)
package com.xiaowu.demo; /** * 输入一行字符,分别统计出其中英文字母.空格.数字和其它字符的个数. * * @author WQ * */ public class De ...
- uVa 12563 Jin Ge Jin Qu
分析可知,虽然t<109,但是总曲目时间大于t,实际上t不会超过180*n+678.此问题涉及到两个目标信息,首先要求曲目数量最多,在此基础上要求所唱的时间尽量长.可以定义 状态dp[i][j] ...
- 3)Win10-UWA开发 API參考 - 2
孙广东 2015.8.23 二.适用于 UWP 应用的 .NET 摘要 适用于 UWP 应用的 .NET 提供一组托管类型.你能够利用这组托管类型通过 C# 或 Visual Basic 创建 ...
- Python 自用代码(scrapy多级页面(三级页面)爬虫)
2017-03-28 入职接到的第一个小任务,scrapy多级页面爬虫,从来没写过爬虫,也没学过scrapy,甚至连xpath都没用过,最后用了将近一周才搞定.肯定有很多low爆的地方,希望大家可以给 ...
- 关于websocket和ajax无刷新
HTTP无状态: Ajax只能实现用户和服务器单方面响应(单工机制). 如果设置为长轮询(ajax设置多少秒进行一次请求,时间间隙可能会有延迟,且浪费资源) 如果设置为长连接(客户端请求一次,服务器保 ...
- Easy way to change collation of all database objects in SQL Server
This info is from: http://www.codeproject.com/Articles/302405/The-Easy-way-of-changing-Collation-of- ...
- react-native + teaset 实现 Tabbar
1.代码 src/pages/MainPage/index.js /** * 主页面 */ import React, {Component} from 'react'; import { BackH ...
- 【经典数据结构】B树与B+树(转)
本文转载自:http://www.cnblogs.com/yangecnu/p/Introduce-B-Tree-and-B-Plus-Tree.html 维基百科对B树的定义为“在计算机科学中,B树 ...
- 使用浏览器地址栏调用CXF Webservice的写法
/* * 通过url调用 * http://localhost:8080/EFP/webService/TestWebservice/testOut/arg0/liuyx */ http://loca ...
- charles用法详解
Charles是目前最强大的http调试工具,在界面和功能上远强于Fiddler,同时是全平台支持,堪称圣杯级工具,唯一的缺陷是这货是收费的,而且是要¥50美元大洋…当然网上是有破解版的,鄙视下自己, ...