背景
某些情况下,需要调用js的一些代码来执行一些操作,并且将处理结果回传到OC。
概述
为了执行一段包含外部引用的js,需要使用UIWebView,通过fileURL去加载一个js或者HTML页面,为了方便的在两个语言之间通信,需要借助一个第三方框架WebViewJavascriptBridge,它可以实现跨语言的请求与回调。
实现
本文讨论的是,从OC调用WebView加载的js的某个方法来处理数据,并且回调处理结果。这里有两个关键点,一是加载的js文件能够处理外部引用,二是OC可以调用js并且回传结果。
加载包含外部引用的js
使用webView的loadRequest:方法,加载一个本地的HTML文件可以实现执行包含外部引用的js。为了证明可以引入外部js,我们引入一个jquery,并且在document.ready中执行后续操作,具体步骤如下。
1.将html与js加入到bundle中
其中index.html中包含的是要执行的js,内容如下:
setupWebViewJavascriptBridge是JSBridge的内容,用于设置桥接。
<body>
<script type="text/javascript" src="jquery.min.js"></script>
<script type="text/javascript">
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&#