我有一个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字符串内的反斜杠进行转义,如上所示。