wkwebview 监听打印consolelog
要监听 WKWebView 中的 console.log 输出,可以使用 WKUserContentController 和 WKScriptMessageHandler。
首先,创建一个遵循 WKScriptMessageHandler 协议的类来处理 JavaScript 消息:
class ConsoleMessageHandler: NSObject, WKScriptMessageHandler {
func userContentController(_ userContentController: WKUserContentController, didReceive message: WKScriptMessage) {
if message.name == "consoleLog" {
print("JavaScript Console Log: \(message.body)")
}
}
}
然后,在创建 WKWebView 的时候,设置其 configuration 的 userContentController,并添加一个与 JavaScript 交互的脚本:
let contentController = WKUserContentController()
let consoleMessageHandler = ConsoleMessageHandler()
contentController.add(consoleMessageHandler, name: "consoleLog")
let configuration = WKWebViewConfiguration()
configuration.userContentController = contentController
let webView = WKWebView(frame: .zero, configuration: configuration)
let script = WKUserScript(source: "console.log = function(message) { window.webkit.messageHandlers.consoleLog.postMessage(message); }", injectionTime: .atDocumentStart, forMainFrameOnly: false)
contentController.addUserScript(script)
这样,当 WKWebView 中的 JavaScript 调用 console.log 方法时,会触发 ConsoleMessageHandler 类中的 userContentController(_:didReceive:) 方法,从而打印出 JavaScript 输出
原文地址: https://www.cveoy.top/t/topic/iTnc 著作权归作者所有。请勿转载和采集!