【发布时间】:2014-04-14 10:33:07
【问题描述】:
我有一个 webview,我从中调用一个返回 JSON.stringify(); 结果的方法
然后将其存储在数据库中,稍后用于在 webview 中恢复页面的状态。
NSString *data = [self.browser stringByEvaluatingJavaScriptFromString:@"course.serialize();"];
[self.course storeRawSerializedData:data];
当从数据库(核心数据)中检索到它时,我将它注入到加载的 html 页面源中,如下所示:
-(void)connectionDidFinishLoading:(NSURLConnection *)connection {
if(_data){
NSString* content = [[NSString alloc] initWithData:_data
encoding:NSUTF8StringEncoding];
_data = nil;
_jsReady = YES;
NSString *data = @"";
if(self.course.returnRawSerializedData){
data = [data stringByAppendingString:@"<script type=\"text/javascript\">var restoreData=%@;</script>"];
data = [NSString stringWithFormat:data, self.course.returnRawSerializedData];
}
//inject extra content to the page
content = [data stringByAppendingString:content];
//load modified HTML string
[self.browser loadHTMLString:content baseURL:_url];
}
}
问题在于这次旅行后 JSON 无效:
webview返回的json是:
{"status":"incomplete","data_json":"{\"colour\":\"#000000\"}"}
注入后是这样的:
<script type=\"text/javascript\">var restoreData={"status":"incomplete","data_json":"{\"colour\":\"#000000\"}"};</script>
页面返回SyntaxError: JSON parse error: Unexpected identifier "object"
当我在 stringByAppendingString 方法中用单引号或双引号括起来时,页面返回 SyntaxError: JSON parse error: Expected '}'
当我(手动)转义所有双引号但我不知道如何以编程方式进行时,它可以工作,我希望从 stringByEvaluatingJavaScriptFromString 返回的字符串已经转义以在双引号中使用。
【问题讨论】:
-
它不是,并且在给定的 SO 问题中提出的解决方案不能解决我的问题(当它转义为百分比编码并且我需要转义引号时它怎么能解决!)。
-
我使用here 提出的解决方案,这并不理想,因为这意味着我的序列化方法会转义。但是,如果我能有一个基于 Objective-C 的解决方案会更好。
标签: javascript ios iphone objective-c webview