iOS WKWebView 如何判断 JavaScript 是否调用了特定方法
你可以使用 WKScriptMessageHandler 协议来监听 JavaScript 对象调用 Objective-C 方法的请求。下面是一个简单的示例,演示如何在 iOS 的 WKWebView 中判断是否有 JavaScript 调用了名为 '_proto.querencaozuo' 的方法:
首先,创建一个遵循 WKScriptMessageHandler 协议的对象,并实现代理方法 'userContentController(_:didReceive:)':
import WebKit
class MyScriptMessageHandler: NSObject, WKScriptMessageHandler {
func userContentController(_ userContentController: WKUserContentController, didReceive message: WKScriptMessage) {
if message.name == '_proto' && message.body as? String == 'querencaozuo' {
// JavaScript 调用了 '_proto.querencaozuo' 方法
// 在这里执行你想要的操作
print('JavaScript 调用了 '_proto.querencaozuo' 方法')
}
}
}
然后,在创建 WKWebView 时,将该对象指定为 WKUserContentController 的代理,并将其添加到 'userContentController' 的 'add(_:name:)' 方法中:
let configuration = WKWebViewConfiguration()
let userContentController = WKUserContentController()
let scriptMessageHandler = MyScriptMessageHandler()
userContentController.add(scriptMessageHandler, name: '_proto')
configuration.userContentController = userContentController
let webView = WKWebView(frame: .zero, configuration: configuration)
现在,当 JavaScript 调用 'proto.querencaozuo' 方法时,'MyScriptMessageHandler' 对象的 'userContentController(:didReceive:)' 方法将被调用,并你可以在其中执行你想要的操作。
注意:确保在 JavaScript 中正确调用了 '_proto.querencaozuo' 方法,并且 WKWebView 加载的网页中已经注入了相应的 JavaScript 代码。
原文地址: https://www.cveoy.top/t/topic/qzrt 著作权归作者所有。请勿转载和采集!