2012-07-13 15 views
10

Wciąż dostaję ten błąd w JavaScript, gdy stara się przekazać jakąś JSON do UIWebView:„SyntaxError: nieoczekiwany EOF” przy ocenie JavaScript w iOS UIWebView

SyntaxError: Unexpected EOF

Nie ma numer linii lub nazwa pliku dostępne w window.onerror ale Sprawdziłem już wszystkie pliki referencyjne i są one w porządku.

Używam MonoTouch EvaluateJavaScript metodę, która jest odpowiednikiem ObjC stringByEvaluatingJavaScriptFromString::

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

współpracuje tylko na „prostą” wejście JSON, ale przerwy w większych obiektach.
Co może pójść nie tak?

Odpowiedz

14

Przed przejściem NSString do UIWebView, należy uciec znaki nowej linii, jak również pojedyncze/podwójne cudzysłowy:

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]; 
+0

w moim przypadku (MacOS 10.11+ Swift 4.x), zastępując '\ '' z '\\\ '' jest niepotrzebne. – keyOfVv

Powiązane problemy