swift 笔记:iOS与JavaScript的交互(二):JavaScriptCore:17。 JSExport相关演示
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了swift 笔记:iOS与JavaScript的交互(二):JavaScriptCore:17。 JSExport相关演示相关的知识,希望对你有一定的参考价值。
// JSExport 协议定义
@objc protocol JSMethodsProtocol: JSExport {
func alert(message: String)
}
// 当前 ViewController 继承 JSExport 协议:JSMethodsProtocol
class UIWebVIewWithJSExport: UIViewController, JSMethodsProtocol {
//...
func alert(message: String) {
DispatchQueue.main.async(execute: {
let ac = UIAlertController(title: "invokedByJavaScript", message: message, preferredStyle: .alert)
let action = UIAlertAction(title: "ok", style: .default)
ac.addAction(action)
self.present(ac, animated: true)
})
}
}
// 在 webViewDidFinishLoad 的 Delegate 中暴露
extension UIWebVIewWithJSExport: UIWebViewDelegate {
func webViewDidFinishLoad(_ webView: UIWebView) {
self.navigationItem.title = webView.stringByEvaluatingJavaScript(from: "document.title")
context = webView.value(
forKeyPath: "documentView.webView.mainFrame.javaScriptContext"
) as? JSContext
//...
// 将当前 ViewController 以 JSBridge 暴露出去
context?.setObject(
self, forKeyedSubscript: "jsBridge" as NSCopying & NSObjectProtocol
)
}
}
以上是关于swift 笔记:iOS与JavaScript的交互(二):JavaScriptCore:17。 JSExport相关演示的主要内容,如果未能解决你的问题,请参考以下文章
swift 笔记:iOS与JavaScript的交互(二):JavaScriptCore:11。暴露
swift 笔记:iOS与JavaScript的交互(二):JavaScriptCore:8。调用引入的JavaScript - 调用
swift 笔记:iOS与JavaScript的交互(二):JavaScriptCore:7。调用引入的JavaScript - 引入方法
swift 笔记:iOS与JavaScript的交互(三):WKWebView 2.显示加载进度
swift 笔记:iOS与JavaScript的交互(二):JavaScriptCore:14。 camelCase调用
swift 笔记:iOS与JavaScript的交互(一):UIWebView - 2.1 UIWebViewDelegate