在 iOS 的 WKWebView 中,无法直接判断是否有 JavaScript 代码调用了' _proto.querencaozuo' 方法,因为这个方法是在 JavaScript 中定义的,并且 WKWebView 无法直接获取 JavaScript 代码的执行信息。

不过,你可以通过在 WKWebView 的代理方法webView:didReceiveScriptMessage:中监听 JavaScript 代码发送的消息,从而判断是否有 JavaScript 调用了' _proto.querencaozuo' 方法。具体步骤如下:

  1. 首先,在你的 ViewController 中,实现 WKScriptMessageHandler 协议,并在初始化 WKWebView 时设置其代理:
@interface YourViewController () <WKScriptMessageHandler>

@property (nonatomic, strong) WKWebView *webView;

@end

@implementation YourViewController

- (void)viewDidLoad {
    [super viewDidLoad];
    
    WKWebViewConfiguration *configuration = [[WKWebViewConfiguration alloc] init];
    [configuration.userContentController addScriptMessageHandler:self name:@'querencaozuo'];
    
    self.webView = [[WKWebView alloc] initWithFrame:self.view.bounds configuration:configuration];
    [self.view addSubview:self.webView];
}

- (void)dealloc {
    [self.webView.configuration.userContentController removeScriptMessageHandlerForName:@'querencaozuo'];
}

#pragma mark - WKScriptMessageHandler

- (void)userContentController:(WKUserContentController *)userContentController didReceiveScriptMessage:(WKScriptMessage *)message {
    if ([message.name isEqualToString:@'querencaozuo']) {
        // 有 JavaScript 调用了' _proto.querencaozuo' 方法
        NSLog(@'JavaScript 调用了' _proto.querencaozuo' 方法');
    }
}

@end
  1. 在 JavaScript 代码中,使用window.webkit.messageHandlers.querencaozuo.postMessage()方法发送消息给 WKWebView:
// JavaScript 代码中
window.webkit.messageHandlers.querencaozuo.postMessage('');

当 JavaScript 代码中调用了window.webkit.messageHandlers.querencaozuo.postMessage()方法后,会触发 WKWebView 的webView:didReceiveScriptMessage:代理方法,从而可以判断是否有 JavaScript 调用了' _proto.querencaozuo' 方法。

iOS WKWebView 检测 JavaScript 方法调用 - _proto.querencaozuo

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

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