странная ошибка WebKit в UIWebView - это можно отловить? - PullRequest
4 голосов
/ 21 ноября 2011

Я загружаю некоторые HTML / JS из подкаталога моего каталога документов на iPad в UIWebView. Пока все отлично работает. Для отладки JS-части я поместил несколько alert(..); операторов в JS-файл. В большинстве случаев с этими предупреждениями проблем нет, но время от времени возникает ошибка в консоли, и приложение вылетает:

WebKit discarded an uncaught exception in the webView:runJavaScriptAlertPanelWithMessage:initiatedByFrame: delegate: <(null)> A route has already been registered for class 'Publication' and HTTP method 'ANY'

Вопрос 1: В чем может быть проблема? Я имею в виду ... это простое предупреждение (); что, кажется, вызывает эту ошибку в консоли.

Вопрос 2: могу ли я отловить эти ошибки в своем приложении? Таким образом, приложение не будет аварийно завершать работу из-за простого оповещения JS ();

Спасибо

1 Ответ

1 голос
/ 20 ноября 2013

Вы можете создать категорию JavaScriptAlert для вашего класса UIWebView. JavaScriptAlert + UIWebView.h

Переопределить метод:

- (void)webView:(UIWebView *)sender runJavaScriptAlertPanelWithMessage:(NSString *)message initiatedByFrame:(id)frame;

Это должно обрабатывать предупреждения от JavaScript.

Затем, на стороне javascript, если вы не работаете в режиме отладки, вы можете установить предупреждение или консольный журнал на функцию no-op. Что-то вроде

var noop = function () {};
console.log = noop;
window.alert = noop;
...