"SyntaxError: Неожиданный EOF" при оценке JavaScript в iOS UIWebView

Я продолжаю получать эту ошибку в JavaScript при попытке передать некоторый JSON на UIWebView:

СинтаксисError: Неожиданный EOF

В window.onerror нет номера строки или имени файла, но я уже проверил все файлы, на которые ссылаются, и они в порядке.

Я использую метод MonaTouch EvaluateJavaScript, который эквивалентен ObjC stringByEvaluatingJavaScriptFromString::

webView.EvaluateJavascript(
    "Viewer.init($('#page'), " + json.ToString() + ");"
);

Он отлично работает на "простом" входе JSON, но разбивается на большие объекты.
Что может пойти не так?

Ответ 1

Прежде чем передавать NSString в UIWebView, обязательно избегайте новых строк, а также одиночных/двойных кавычек:

NSString *html = @"<div id='my-div'>Hello there</div>";

html = [html stringByReplacingOccurrencesOfString:@"\'" withString:@"\\\'"];
html = [html stringByReplacingOccurrencesOfString:@"\"" withString:@"\\\""];
html = [html stringByReplacingOccurrencesOfString:@"\n" withString:@"\\n"];
html = [html stringByReplacingOccurrencesOfString:@"\r" withString:@""];

NSString *javaScript = [NSString stringWithFormat:@"injectSomeHtml('%@');", html];
[_webView stringByEvaluatingJavaScriptFromString:javaScript];