Attention! Translated article might be found on my English blog.

2015年5月10日日曜日

WebViewのJavaScriptエラーを取得する(デバッグ用途のみ)

デバッグ用途のみであれば、隠しAPIの[WebUIDelegatePrivate webView:addMessageToConsole:]をWebUIDelegateで実装すると、JavaScriptエラー発生時に内容を取得できるようです。

参考: [webkit-dev] How to catch JS exceptions/log messages from a WebView?
参考: WebUIDelegatePrivate.h

第2引数はNSDictionaryで、例えば以下のようなキーと値を持っています。

message:{
    MessageLevel = ErrorMessageLevel;
    MessageSource = JSMessageSource;
    columnNumber = 2;
    lineNumber = 119;
    message = "ReferenceError: Can't find variable: $";
    sourceURL = "file:///foo/bar/js.js";
}

jqueryを入れ忘れた時のエラーメッセージですね。

iOSの場合はこちらのアプローチも参考になるかもです。

参考: How can my iPhone Objective-C code get notified of Javascript errors in a UIWebView? - Stack Overflow
参考: ios - Setting UIDelegate for UIWebView - Stack Overflow