在WKWebView中监听打印的console.log信息,可以通过WKWebView的configuration对象的userContentController属性来添加一个WKScriptMessageHandler对象,来处理JavaScript发送的消息。

首先,创建一个遵循WKScriptMessageHandler协议的Objective-C类,例如ConsoleMessageHandler:

@interface ConsoleMessageHandler : NSObject <WKScriptMessageHandler>
@end

@implementation ConsoleMessageHandler

- (void)userContentController:(WKUserContentController *)userContentController didReceiveScriptMessage:(WKScriptMessage *)message {
    if ([message.name isEqualToString:@"consoleLog"]) {
        NSLog(@"console.log: %@", message.body);
    }
}

@end

然后,在创建WKWebView实例时,为其configuration对象的userContentController属性添加刚才创建的ConsoleMessageHandler对象:

WKWebViewConfiguration *configuration = [[WKWebViewConfiguration alloc] init];
ConsoleMessageHandler *messageHandler = [[ConsoleMessageHandler alloc] init];
[configuration.userContentController addScriptMessageHandler:messageHandler name:@"consoleLog"];

WKWebView *webView = [[WKWebView alloc] initWithFrame:self.view.frame configuration:configuration];

在JavaScript中,可以使用window.webkit.messageHandlers.consoleLog.postMessage()方法将console.log的信息发送给Objective-C代码:

console.log("Hello, world!");
window.webkit.messageHandlers.consoleLog.postMessage("Hello, world!");

当JavaScript中调用console.log时,Objective-C的ConsoleMessageHandler对象的didReceiveScriptMessage方法就会被调用,并打印出相应的信息

wkwebview 监听打印consolelog object-c代码

原文地址: https://www.cveoy.top/t/topic/iTng 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录