评估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”。