window.webkit.messageHandlers.<handlerName>.postMessage(<message>) 例子
时间: 2024-04-15 18:28:48 浏览: 337
下面是一个使用 `window.webkit.messageHandlers.<handlerName>.postMessage(<message>)` 进行消息传递的简单例子:
在 H5 页面中,可以使用以下代码向 iOS App 发送消息:
```javascript
window.webkit.messageHandlers.myHandler.postMessage("Hello from H5");
```
在 iOS App 中,需要进行相应的设置来接收并处理这个消息。以下是一个示例代码:
```swift
import WebKit
class ViewController: UIViewController, WKScriptMessageHandler {
var webView: WKWebView!
override func viewDidLoad() {
super.viewDidLoad()
let configuration = WKWebViewConfiguration()
// 注册 messageHandler
configuration.userContentController.add(self, name: "myHandler")
webView = WKWebView(frame: view.bounds, configuration: configuration)
view.addSubview(webView)
// 加载 H5 页面
if let htmlPath = Bundle.main.path(forResource: "index", ofType: "html") {
let htmlUrl = URL(fileURLWithPath: htmlPath)
webView.loadFileURL(htmlUrl, allowingReadAccessTo: htmlUrl)
}
}
// 实现 WKScriptMessageHandler 的代理方法,接收并处理从 H5 发送过来的消息
func userContentController(_ userContentController: WKUserContentController, didReceive message: WKScriptMessage) {
if message.name == "myHandler" {
if let body = message.body as? String {
print("Received message from H5: \(body)")
// 在这里可以进行相应的处理逻辑
}
}
}
}
```
在这个例子中,我们注册了名为 "myHandler" 的 messageHandler,并在 H5 页面中使用 `window.webkit.messageHandlers.myHandler.postMessage("Hello from H5")` 发送消息。在 iOS App 中,我们实现了 `WKScriptMessageHandler` 的代理方法 `userContentController(_:didReceive:)` 来接收并处理从 H5 发送过来的消息。
当 H5 页面中调用 `window.webkit.messageHandlers.myHandler.postMessage(<message>)` 时,iOS App 中的 `userContentController(_:didReceive:)` 方法会被调用,我们可以在这个方法中获取到消息内容,然后进行相应的处理。
希望这个例子能够帮助你理解如何在 iOS App 中接收来自 H5 页面的消息。如果有任何问题,请随时提问!
阅读全文