"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];
Ответ 2
По-видимому, я забыл избежать новых строк в JSON и, таким образом, создал "неожиданный EOF" для UIWebView.