ios - WKScriptMessageHandler 不起作用 ios swift xcode
问题描述
请告诉我,有没有这样的代码。当 webview 加载时,页面发送 postMessage。由于某种原因,打印不起作用。
ViewController.swift:
import UIKit
import WebKit
class ViewController: UIViewController, WKUIDelegate, WKNavigationDelegate, WKScriptMessageHandler {
var webView: WKWebView!
override func loadView() {
webView = WKWebView()
webView.navigationDelegate = self
view = webView
}
override func viewDidLoad() {
super.viewDidLoad()
let url = URL(string: "https://web.site/")!
webView.load(URLRequest(url: url))
let config = WKWebViewConfiguration()
let userContentController = WKUserContentController()
userContentController.add(self, name: "test")
config.userContentController = userContentController
}
func userContentController(_ userContentController: WKUserContentController, didReceive message: WKScriptMessage) {
if message.name == "test", let messageBody = message.body as? String {
print(messageBody)
}
}
}
索引.html:
<script>
function printHelloWorld() {
window.webkit.messageHandlers.test.postMessage("Hello, world!");
}
window.onload = printHelloWorld;
</script>
请告诉我可能是什么问题?
解决方案
试试这个配置:
func setupWebView() {
let config: WKWebViewConfiguration = WKWebViewConfiguration()
config.userContentController.add(self, name: "test")
webView = WKWebView(frame: self.view.frame, configuration: config)
webView?.navigationDelegate = self
self.webView?.load(URLRequest(url:url))
}
还要检查 Webkit 是否正确发送消息并使用与 iOS 相同的消息处理程序名称。
推荐阅读
- wordpress - 以百分比而不是总税值显示税率 - woocommerce
- r - 使用 MODIStsp_extract() 从栅格中提取点
- c++ - 私有 const 成员函数的成员检测
- drools - 在多线程环境中使用 Single KieSession 实例安全吗?
- jquery - 如何防止数据表翻页?
- gatsby - 基于 gatsby starter blog 在 Netlify 上为我的 Gatsby 应用程序部署失败
- powershell - Powershell 命令作为 Ansible 中的变量
- android - minSdkVersion 21 是否只允许 Android >= 5 用户从商店下载应用程序?
- java - 如果我向服务器发送带有参数的 get 请求,我会收到 Postman 不允许的 405 方法
- android - 设计安卓用户界面