iOS WebKit与JavaScript交互是指在iOS平台上,通过WebKit引擎实现网页与JavaScript代码之间的通信和数据交换。WebKit是iOS上用于渲染网页的核心引擎,它提供了丰富的API来支持JavaScript与原生应用之间的交互。
window.webkit.messageHandlers.<name>.postMessage()
方法向原生应用发送消息。WKScriptMessageHandler
。import WebKit
class ViewController: UIViewController, WKScriptMessageHandler {
var webView: WKWebView!
override func viewDidLoad() {
super.viewDidLoad()
let config = WKWebViewConfiguration()
let userContentController = WKUserContentController()
userContentController.add(self, name: "nativeBridge")
config.userContentController = userContentController
webView = WKWebView(frame: view.bounds, configuration: config)
view.addSubview(webView)
if let url = URL(string: "https://example.com") {
webView.load(URLRequest(url: url))
}
}
func userContentController(_ userContentController: WKUserContentController, didReceive message: WKScriptMessage) {
if message.name == "nativeBridge", let body = message.body as? String {
print("Received message from JavaScript: \(body)")
// 向JavaScript发送消息
let js = "receiveMessageFromNative('\(body)')"
webView.evaluateJavaScript(js, completionHandler: nil)
}
}
}
<!DOCTYPE html>
<html>
<head>
<title>JavaScript to Native</title>
<script>
function sendMessageToNative() {
window.webkit.messageHandlers.nativeBridge.postMessage("Hello from JavaScript!");
}
</script>
</head>
<body>
<button onclick="sendMessageToNative()">Send Message to Native</button>
</body>
</html>
WKScriptMessageHandler
已正确注册,并且在JavaScript中使用了正确的消息处理程序名称。WKScriptMessageHandler
已正确注册,并且在JavaScript中使用了正确的消息处理程序名称。evaluateJavaScript
,可以考虑使用批量处理或缓存机制来优化性能。通过以上方法,可以实现iOS WebKit与JavaScript之间的有效交互,并解决常见的开发问题。
领取专属 10元无门槛券
手把手带您无忧上云