将现有的 NSStrings 发送到 StringByEvaluatingJavaScriptFromString
Posted
技术标签:
【中文标题】将现有的 NSStrings 发送到 StringByEvaluatingJavaScriptFromString【英文标题】:Sending existing NSStrings to StringByEvaluatingJavaScriptFromString 【发布时间】:2010-11-11 15:46:26 【问题描述】:这是我的代码:
NSString *js =[NSString stringWithFormat:@"document.getElementsByTagName('body')[0].innerhtml = '<h1>%@</h1>';",s];
[pageView stringByEvaluatingjavascriptFromString:js];
pageView 是一个已经加载了 html 文档的 UIWebView。我希望它显示 NSString 。但是,当调用此函数时,可见的 html 保持不变。我知道 s 有一个值,因为它正确地打印到控制台上方的一行。如果我将“%@”替换为“poot”,“poot”会出现在 html 的 h1 标记中。
难道我不能像这样将 s 发送到 html 吗?
谢谢。
【问题讨论】:
【参考方案1】:s
的预期内容是什么?如果它使您的 JavaScript 在语法上无效,则可能会导致此问题。
【讨论】:
有趣。如果我在调用它之前将 s 更改为一个简短的单字 NSString,它确实有效。我不确定为什么会有什么会使它无效。 s 的现有值是从不同 html 文档中的 p 标记中提取的文本数据。这是一个较长的字符串,是一个完整的段落,但这不应该使 js 无效。 除非它包含换行符或单引号字符。不要忘记,生成的 JavaScript 字符串必须是完全有效的程序片段。 S 确实包含单引号,用作段落中的撇号。它还使用“—”对于“-”字符。我想如果我以这种方式传递它,它只会作为字符串文字传递。 所以你的 JavaScript 最终读取为document.getElementsByTagName('body')[0].innerHTML = '<h1>I'm testing</h1>'
,它被解析为document.getElementsByTagName('body')[0].innerHTML = '<h1>I'
,然后是`m testing/h1>'`,这在语法上是无效的。您需要转义引号,或使用双引号。
谢谢,试试这个。特殊字符代码会给我带来麻烦吗?以上是关于将现有的 NSStrings 发送到 StringByEvaluatingJavaScriptFromString的主要内容,如果未能解决你的问题,请参考以下文章
如何将原始 NSData 以及一些 NSStrings 发布到我的服务器?
将现有的 Symfony 项目从 2.8.* 更新到 4.26.3