将现有的 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 = '&lt;h1&gt;I'm testing&lt;/h1&gt;',它被解析为document.getElementsByTagName('body')[0].innerHTML = '&lt;h1&gt;I',然后是`m testing/h1>'`,这在语法上是无效的。您需要转义引号,或使用双引号。 谢谢,试试这个。特殊字符代码会给我带来麻烦吗?

以上是关于将现有的 NSStrings 发送到 StringByEvaluatingJavaScriptFromString的主要内容,如果未能解决你的问题,请参考以下文章

将现有的项目列表附加到新列表

如何将原始 NSData 以及一些 NSStrings 发布到我的服务器?

将现有的 exe 文件嵌入到另一个程序中

将现有的 Symfony 项目从 2.8.* 更新到 4.26.3

如何手动将现有的配置文件和证书添加到 fastlane 匹配?

如何将现有的地理服务器独立应用程序迁移到 Web 存档?