{
Method originalMethod = class_getInstanceMethod([NSClassFromString(@"WKWebView") class], @selector(evaluateJavaScript:completionHandler:));
Method swizzledMethod = class_getInstanceMethod([self class], @selector(evaluateJavaScript:completionHandlerS:));
method_exchangeImplementations(originalMethod, swizzledMethod);
}
- (void)evaluateJavaScript:(NSString *)javaScriptString completionHandlerS:(void (^)(id _Nullable str7 , NSError * er7))completionHandler{
[self evaluateJavaScript:javaScriptString completionHandlerS:^(id _Nullable str, NSError *er) {
if (completionHandler != nil) {//判空一定不能省,会闪退的
NSLog(@"%@ 返回 %@ ",javaScriptString,str);
completionHandler(str,er);
}
}];
判断completionHandler是不是空,很重要。
这样就能全局的hook客户端调用前端的所有数据和返回数据。