12

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

语法错误:意外的 EOF

没有可用的行号或文件名,window.onerror但我已经检查了所有引用的文件,它们很好。

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

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

它在“简单”的 JSON 输入上工作得很好,但在较大的对象上会中断。
会出什么问题?

4

2 回答 2

25

在将 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];
于 2014-04-02T12:09:01.650 回答
5

显然,我忘了在 JSON 中转义换行符,因此为 UIWebView 创建了一个“意外的 EOF”。

于 2012-07-13T21:01:52.843 回答