2012-07-13 55 views
10

評估的JavaScript時,我不斷收到在JavaScript這個錯誤嘗試一些JSON傳遞到UIWebView時:「語法錯誤:意外的EOF」 iOS中的UIWebView

SyntaxError: Unexpected EOF

沒有在window.onerror可用的行號或文件名,但我已經檢查過所有參考文件,並且它們都很好。

我使用MonoTouch的EvaluateJavaScript方法,相當於ObjC stringByEvaluatingJavaScriptFromString:

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

它適用於「簡單」的JSON輸入得很好,但在休息較大的物體。
什麼可能出錯?

回答

14

傳遞一個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]; 
+0

在我的情況(MacOS的10.11+,斯威夫特4.x的),取代'\''用'\\\''是不必要的。 – keyOfVv 2018-02-07 07:11:38