从UIWebView使用多行字符串调用Javascript函数
我正在使用D3.js以TSV文件的形式为一些信息创建一个图表。我将TSV文件保存为NSString。在javascript中,我有一个函数,它将获取字符串,解析它,并根据其内容创建一个图表。下面是我调用JS函数的代码:从UIWebView使用多行字符串调用Javascript函数,javascript,ios,objective-c,d3.js,uiwebview,Javascript,Ios,Objective C,D3.js,Uiwebview,我正在使用D3.js以TSV文件的形式为一些信息创建一个图表。我将TSV文件保存为NSString。在javascript中,我有一个函数,它将获取字符串,解析它,并根据其内容创建一个图表。下面是我调用JS函数的代码: [self.mainWebView stringByEvaluatingJavaScriptFromString:[NSString stringWithFormat:@"parseTSV(\"%@\");", tsvString]]; 在上面的代码中从未调用过该函数,但如果我
[self.mainWebView stringByEvaluatingJavaScriptFromString:[NSString stringWithFormat:@"parseTSV(\"%@\");", tsvString]];
在上面的代码中从未调用过该函数,但如果我传入一个随机字符串文字,它就是这样的:
[self.mainWebView stringByEvaluatingJavaScriptFromString:@"parseTSV(\"randomString\")"];
这可能是因为JS没有将多行字符串作为函数参数吗?有什么解决办法吗
谢谢。JavaScript不支持字符串文本中的换行符-不管它是否是函数的参数。将换行符编码为\n,或者更好地使用现有的适当转义机制,JSON字符串会工作得很好。我很确定换行符已经编码为\n了…那么它就不是一个语法错误,这是对该行为最合理的解释-一个字符串就是一个字符串就是一个字符串。从哪里开始并不重要,只要它是一个有效的表达式。我建议在这里使用JSON,只需传递整个对象,并将字符串作为一些值—这将避免任何琐碎的解析错误,例如字符串中的换行符,并轻松适应更复杂的值/数据的扩展。还有其他情况下,randomString可能会破坏JS:即某些反斜杠组合或双引号。感谢您的帮助。我需要将字符串中的换行符\n更改为\\n,以便JS识别它。它需要\n在JavaScript文本中,但\\n在C字符串文本中,这将\n在生成的C字符串中,从而在JS文本中。虽然解决了眼前的问题很好,但我仍然鼓励使用JSON作为交换格式构建一个更强大的接口层。