У меня есть проект, который использует JavaScriptCore для связи между веб-просмотром и Objective C. Все работает хорошо, за исключением того, что я, кажется, не могу регистрировать ошибки времени выполнения в консоли XCode.
Имею следующее:
- (void)createWebViewContext {
//Find the context
self.webViewContext = [self.webView valueForKeyPath:@"documentView.webView.mainFrame.javaScriptContext"];
//Register JS error handler
self.webViewContext.exceptionHandler = ^(JSContext *c, JSValue *e) {
dispatch_async(dispatch_get_main_queue(), ^{
NSLog(@"JAVASCRIPT ERROR: %@. Stack: %@", e, [e valueForProperty:@"stack"]);
});
};
//Attach logger
id logger = ^(NSString *logMessage) {
NSLog(@"%@", logMessage);
};
self.webViewContext[@"console"][@"log"] = logger;
self.webViewContext[@"console"][@"info"] = logger;
self.webViewContext[@"console"][@"error"] = logger;
self.webViewContext[@"console"][@"err"] = logger;
self.webViewContext[@"console"][@"warn"] = logger;
}
Этот код ДЕЙСТВИТЕЛЬНО работает - если я console.log
или console.err
что-то, я получаю вывод в XCode. Проблема в том, что я НЕ получаю ошибок, генерируемых JavaScript (таких как SyntaxErrors, TypeErrors и т.п.). Подобные ошибки по-прежнему отображаются в инспекторе Safari, но не в XCode.
Любой способ добиться этого?