代码拉取完成,页面将自动刷新
此项目基于 WebViewJavascriptBridge,在其上仅对 WKWebView 提供支持,由 Swift 实现!
您可以通过使用 WKWebViewJavascriptBridge 书写几行代码实现混合模块,而无需关心底层的消息传递实现。
众所周知,WKWebView 比 UIWebView 加载网页的速度更快,效率更高,且没有太多的内存开销。
在当前时间节点,大多数 iOS App 都是基于 iOS 9.0+ 的,这是一个 WKWebView 的时代。
iOS 平台跨域访问漏洞成因是由于 UIWebView 默认开启了WebKitAllowUniversalAccessFromFileURLs 和 WebKitAllowFileAccessFromFileURLs 选项。
相比之下,WKWebView 默认 allowFileAccessFromFileURLs 和 allowUniversalAccessFromFileURLs 选项为 false。
关于更多 UIWebView 跨域访问漏洞,点击 这里 了解更多。
.h
仅有 3 个文件。webView
的继承基类(这里假设当前时间节点下大部分 iOS App 已经完成了从 UIWebView 到 WKWebView 的迁徙,反正早晚要做这件事不是吗?)。bridge = WKWebViewJavascriptBridge(webView: webView)
bridge.register(handlerName: "testiOSCallback") { (paramters, callback) in
print("testiOSCallback called: \(String(describing: paramters))")
callback?("Response from testiOSCallback")
}
bridge.call(handlerName: "testJavascriptHandler", data: ["foo": "before ready"], callback: nil)
function setupWKWebViewJavascriptBridge(callback) {
if (window.WKWebViewJavascriptBridge) { return callback(WKWebViewJavascriptBridge); }
if (window.WKWVJBCallbacks) { return window.WKWVJBCallbacks.push(callback); }
window.WKWVJBCallbacks = [callback];
window.webkit.messageHandlers.iOS_Native_InjectJavascript.postMessage(null)
}
setupWKWebViewJavascriptBridge(function(bridge) {
/* Initialize your app here */
bridge.registerHandler('testJavascriptHandler', function(data, responseCallback) {
console.log('iOS called testJavascriptHandler with', data)
responseCallback({ 'Javascript Says':'Right back atcha!' })
})
bridge.callHandler('testiOSCallback', {'foo': 'bar'}, function(response) {
console.log('JS got response', response)
})
})
pod 'WKWebViewJavascriptBridge', '~> 1.2.0'
。pod install
或 pod update
。import WKWebViewJavascriptBridge
。github "Lision/WKWebViewJavascriptBridge" ~> 1.2.0
。carthage update --platform ios
。WKWebViewJavascriptBridge
Framework 到你的项目中。clone
这个项目并手动添加 WKWebViewJavascriptBridge 目录中的文件。
此框架要求 iOS 9.0+
以及 Xcode 9.0+
。
WKWebViewJavascriptBridge 基于 MIT 许可证,查看 LICENSE 文件了解更多信息。
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。