主要思路: 1.重寫js的console.log方法。 2.iOS端在h5開始創(chuàng)建DOM樹的時候注入。
源代碼地址:https://github.com/housenkui/WKWebView-Console
您的星星,是我最大的鼓勵。O(∩_∩)O謝謝
#import "SKWebView.h"
@interface WKWebView ()
@end
@implementation SKWebView
- (instancetype)initWithFrame:(CGRect)frame configuration:(WKWebViewConfiguration*)configuration {
? ? if(self= [superinitWithFrame:frameconfiguration:configuration])
? ? {
? ? ? ? WKUserContentController *userCC = configuration.userContentController;
? ? ? ? [userCCaddScriptMessageHandler:self name:@"log"];
? ? }
? ? return self;
}
- (void)showConsole {
? ? NSString *jsCode = @"console.log = (function(oriLogFunc){\
? ? return function(str)\
? ? {\
? ? window.webkit.messageHandlers.log.postMessage(str);\
? ? oriLogFunc.call(console,str);\
? ? }\
? ? })(console.log);";
? ? [self.configuration.userContentController addUserScript:[[WKUserScript alloc] initWithSource:jsCode injectionTime:WKUserScriptInjectionTimeAtDocumentStart forMainFrameOnly:YES]];
}
- (void)userContentController:(WKUserContentController*)userContentController didReceiveScriptMessage:(WKScriptMessage*)message {
? ? NSLog(@"%@",NSStringFromSelector(_cmd));
? ? NSLog(@"%@",message.body);
}