我有一个UIWebView,我想在加载后在其末尾注入一些HTML。

NSString* javaScript = [NSString stringWithFormat:@"document.body.innerHTML += '%@'", arbitraryHTML];
[self.webView stringByEvaluatingJavaScriptFromString:javaScript];


上面的代码有效,但是仅当任意HTML格式正确时。例如。单引号'转义为\'
我想清理一般的HTML,以便将其传递给javascript函数。

我还需要转义其他哪些字符或可能导致问题的字符串?

这是一些破坏上述代码的HTML的示例:

<span><a onmouseover=\\\"jQuery\\'# >Test</a></span>"


能做到这一点吗?我还想念什么?

谢谢!

最佳答案

您需要确保JS引擎不会抛出异常。因此,您需要转义单引号和反斜杠。这应该可以解决问题:

arbitraryHTML = [[arbitraryHTML
        stringByReplacingOccurrencesOfString:@"\\" withString:@"\\\\"]
        stringByReplacingOccurrencesOfString:@"'" withString:@"\\'"]];


请注意,您还需要对Objective-C字符串内的反斜杠进行转义,如上所示。

09-25 19:54