我试图捕捉 WKWebView 中的每个 onClick 事件。 该网站仅使用 JavaScript,因此我无法处理以下内容:

func webView(_ webView: WKWebView, decidePolicyFor navigationAction: WKNavigationAction, decisionHandler: @escaping (WKNavigationActionPolicy) -> Void) 

我该怎么做?

请您参考如下方法:

您可以使用 WKUserScript 并将其添加到 WKWebView 配置的 userContentController。

    let config = WKWebViewConfiguration() 
    let source = "document.addEventListener('click', function(){ window.webkit.messageHandlers.iosListener.postMessage('click clack!'); })" 
    let script = WKUserScript(source: source, injectionTime: .atDocumentEnd, forMainFrameOnly: false) 
    config.userContentController.addUserScript(script) 
    config.userContentController.add(self, name: "iosListener") 
    webView = WKWebView(frame: UIScreen.main.bounds, configuration: config) 

这将生成脚本并在文档加载完成后将其注入(inject)页面。现在,您需要实现 WKScriptMessageHandler 协议(protocol)来接收消息:

    func userContentController(_ userContentController: WKUserContentController, didReceive message: WKScriptMessage) { 
        print("message: \(message.body)") 
        // and whatever other actions you want to take 
    } 


评论关闭
IT虾米网

微信公众号号:IT虾米 (左侧二维码扫一扫)欢迎添加!