笔记:iOS 与 JavaScript 的交互(二):JavaScriptCore:16. JSContext 相关 demo,在 Delegate:webViewDidFinishLoad() 中获取 context
extension UIWebViewWithJavaScriptCore: UIWebViewDelegate {
func webViewDidFinishLoad(_ webView: UIWebView) {
self.navigationItem.title = webView.stringByEvaluatingJavaScript(
from: "document.title"
)
context = webView.value(
forKeyPath: "documentView.webView.mainFrame.javaScriptContext"
) as? JSContext
// ...
let callBack : @convention(block) (String?) -> Void = { paramFromJS in
let msg = "\(paramFromJS ?? "default value" as String)"
self.alert(message: msg)
}
context?.setObject(
unsafeBitCast(callBack, to: AnyObject.self),
forKeyedSubscript: "invokeNative" as NSCopying & NSObjectProtocol
)
}
}