JavaScriptCore通知控制器错误

时间:2014-01-24 06:47:30

标签: objective-c javascriptcore

我试图让window.onerror随时通知我的视图控制器。我正在设置有关Web视图的JSContext的块回调,它确实执行,但这仅适用于Web视图中的初始页面加载。刷新页面时,错误不再出现在控制器上。有什么想法吗?

JSContext *ctx = [resultWebView valueForKeyPath:@"documentView.webView.mainFrame.javaScriptContext"];
    ctx[@"window"][@"onerror"] = ^(JSValue *message, JSValue *file, JSValue *line) {
        NSLog(@"%@", message);
    };

1 个答案:

答案 0 :(得分:1)

页面刷新导致JSContext被替换。

您需要为帧加载实现委托,并将 window.onerror 处理程序放在 -webView的选择器实现中:didCreateJavaScriptContext:forFrame:

@implementation MyFrameLoadDelegate

- (void)webView:(WebView *)webView didCreateJavaScriptContext:(JSContext *)context forFrame:(WebFrame *)frame
{
    context[@"window"][@"onerror"] = ^(JSValue *message, JSValue *file, JSValue *line) {
        NSLog(@"%@", message);
    };
}

@end

有关JavaScriptCore.framework最近推出的新功能的精彩介绍,请查看Apple开发者网络上的2013 WWDC简介“将JavaScript集成到本机应用程序”会话:https://developer.apple.com/videos/wwdc/2013/?id=615

它在WebView上有一个简短的部分。