【问题标题】:Catch JavaScript exceptions from WebView in ios在 ios 中从 WebView 中捕获 JavaScript 异常
【发布时间】:2016-09-16 05:09:54
【问题描述】:

如果屏幕中出现WebView,我需要捕捉WebView 中发生的错误。那不是绑定到特定的WebView

【问题讨论】:

  • UIWebView? WKWebView? not to bind to a specific WebView??

标签: ios objective-c iphone webview


【解决方案1】:

不确定您是否已经尝试过此解决方案,您可以在 JS 代码中捕获异常并调用本机方法来记录此信息。您可以在收到下面的 UIWebView 委托回调后,将此本机方法实现注入到 UIWebview 的 JS 上下文中,该回调已创建 webView 的 JS 上下文。

- (void)webView:(id)webView didCreateJavaScriptContext:(JSContext *)context forFrame:(id)frame {
//this injects the MyNativeLog in your UIWebView JS context and you can call this function in your JS code.
context[@"MyNativeLog"] = ^(NSString *string){
            NSLog(@"%@", string);
        };
}

希望这会有所帮助!

【讨论】:

  • Vadim Denisuk,如果它适合您,请接受答案。
  • Chandra,我不需要从 JavaScript 调用代码。我将无法访问 JavaScript 代码。
【解决方案2】:

以下内容可能对您有所帮助,请检查以下已经存在的链接

How can my iPhone Objective-C code get notified of Javascript errors in a UIWebView?

您可以将 UIWebView 控件挂钩到隐藏的 WebKit 框架并获取所有异常、执行的函数等。

【讨论】:

    【解决方案3】:

    你需要使用WebFrameLoadDelegate ProtocolwebView:didClearWindowObject:forFrame:方法。

    检查这个:https://developer.apple.com/library/mac/documentation/Cocoa/Reference/WebKit/Protocols/WebFrameLoadDelegate_Protocol/#//apple_ref/occ/instm/NSObject/webView:didClearWindowObject:forFrame:

    在那里你可以捕捉到任何类型的 javascript 异常发生。这不绑定到特定的 WebView。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-09-20
      • 1970-01-01
      • 2011-05-18
      • 2023-03-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多