我有一个UIWebView,我想在加载后将一些HTML注入其末尾。
NSString* javaScript = [NSString stringWithFormat:@"document.body.innerHTML += '%@'", arbitraryHTML];
[self.webView stringByEvaluatingJavaScriptFromString:javaScript];
上面的代码可以正常工作,但前提是任意HTML格式正确。例如。单引号'被转义为\' 我想在genearl中清理HTML,以便将其传递给javascript函数。
我需要逃脱的其他角色或可能导致问题的字符串是什么?
以下是一些违反上述代码的HTML示例:
<span><a onmouseover=\\\"jQuery\\'# >Test</a></span>"
这可以在genearl中完成吗?我还缺少什么?
谢谢!
答案 0 :(得分:2)
您需要确保JS引擎不会丢失。所以你需要转义单引号和反斜杠。这应该可以解决问题:
arbitraryHTML = [[arbitraryHTML
stringByReplacingOccurrencesOfString:@"\\" withString:@"\\\\"]
stringByReplacingOccurrencesOfString:@"'" withString:@"\\'"]];
请注意,您还需要在Objective-C字符串中转义反斜杠,如上所示。
答案 1 :(得分:1)
事实证明,它不足以逃脱单引号字符。我还需要转义/ n和/ r以使这一点适用于所有HTML。
我可能会遗漏一些其他角色,如果我找到一个案例,我会发布它。