webview给前端页面传递数据_使用WebViewJavascriptBridge实现与UIWebView的深度交互

本文介绍了如何使用WebViewJavascriptBridge在Objective-C项目中与UIWebView进行深度交互,包括设置HTML、注册方法、调用JS方法、处理图片点击和放大功能,详细阐述了每个步骤和关键代码。
摘要由CSDN通过智能技术生成

最近在做的项目遇到这么一个需求:网络加载一段HTML格式的只有body部分的文本,自己本地拼写完整的HTML,图片需带点击放大浏览功能(移动端实现)。

分析需求之后发现难点在如何与UIWebview进行交互,在查阅资料后,找到http://kittenyang.com/webview-javascript-bridge

KittenYang大神完美解决了我的问题,但过程中还是出了不少问题,这里就写下按照大神的思路写的具体实现过程

这里主要用了WebViewJavascriptBridge,SDWebImage,YYPhotoGroup这三个第三方库。

WebViewJavascriptBridge使用简介

HTML文本的标签中间添加如下代码

function setupWebViewJavascriptBridge(callback) {

if (window.WebViewJavascriptBridge) { return callback(WebViewJavascriptBridge); }

if (window.WVJBCallbacks) { return window.WVJBCallbacks.push(callback); }

window.WVJBCallbacks = [callback];

var WVJBIframe = document.createElement('iframe');

WVJBIframe.style.display = 'none';

WVJBIframe.src = 'wvjbscheme://__BRIDGE_LOADED__';

document.documentElement.appendChild(WVJBIframe);

setTimeout(function() { document.documentElement.removeChild(WVJBIframe) }, 0)}

setupWebViewJavascriptBridge(function(bridge) {

//方法名,传递的参数,回调

bridge.callHandler('testObjcCallback', 'Hello world', function(response)){

};

//方法名,收到的参数,回调方法

bridge.registerHandler('testJavascriptHandler', function(data, responseCallback) {

var message = data['foo']

console.log(message)

})

在OC端需实现

@property(strong,nonatomic) WebViewJavascriptBridge* bridge;

_bridge = [WebViewJavascriptBridge bridgeForWebView:webView];

//注册方法

[_bridge registerHandler:@"testObjcCallback" handler:^(id data, WVJBResponseCallback responseCallback) {

NSLog(@"testObjcCallback called: %@", data);

responseCallback(@"Response from testObjcCallback");

}];

//调用JS的方法并传参

[_bridge callHandler:@"testJavascriptHandler" dat

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值