2012-07-13 18 views
10

tôi tiếp tục nhận được lỗi này trong JavaScript khi cố gắng vượt qua một số JSON để một UIWebView:“Lỗi Cú pháp: EOF bất ngờ” khi đánh giá JavaScript trong iOS UIWebView

SyntaxError: Unexpected EOF

Không có số dòng hoặc tên tập tin có sẵn trong window.onerror nhưng Tôi đã kiểm tra tất cả các tập tin tham chiếu, và chúng được sử dụng tốt.

Tôi đang sử dụng MonoTouch EvaluateJavaScript phương pháp tương đương với ObjC stringByEvaluatingJavaScriptFromString::

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

Nó hoạt động tốt trên “đơn giản” JSON đầu vào nhưng nghỉ tại đối tượng lớn hơn.
Điều gì có thể xảy ra?

Trả lời

14

Trước khi đi qua một NSString đến một UIWebView, hãy chắc chắn để thoát khỏi dòng mới cũng như đơn dấu ngoặc kép /:

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

Trong trường hợp của tôi (hệ điều hành MacOS 10.11+, Swift 4.x), thay thế '\ '' với '\\\ '' là không cần thiết. – keyOfVv

3

Dường như, tôi đã quên escape newlines in JSON và do đó đã tạo “EOF không mong muốn” cho UIWebView.