【问题标题】:JavaScriptCore notifying controller of errorsJavaScriptCore 通知控制器错误
【发布时间】:2014-01-24 06:47:30
【问题描述】:

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

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

【问题讨论】:

    标签: objective-c javascriptcore


    【解决方案1】:

    页面刷新导致JSContext被替换。

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

    @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 的末尾有一个简短的部分。

    【讨论】:

      猜你喜欢
      • 2019-03-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-08-18
      • 2014-11-20
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多