评估iOS UIWebView中的JavaScript时出现“SyntaxError:Unexpected EOF”

在尝试将一些JSON传递给UIWebView时,我不断收到JavaScript错误:

SyntaxError:意外的EOF

window.onerror没有行号或文件名可用,但我已经检查了所有引用的文件,并没有问题。

我正在使用MonoTouch EvaluateJavaScript方法,它相当于ObjC stringByEvaluatingJavaScriptFromString: ::

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

它在“简单的”JSONinput上工作得很好,但是在较大的对象上会中断。
有什么可能出错?

在将一个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]; 

显然,我忘了在JSON中逃避换行 ,从而为UIWebView创build了一个“意想不到的EOF”。