使用javascript将HTML注入iPhone的网页末尾

时间:2012-03-01 07:15:35

标签: javascript objective-c uiwebview

我有一个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中完成吗?我还缺少什么?

谢谢!

2 个答案:

答案 0 :(得分:2)

您需要确保JS引擎不会丢失。所以你需要转义单引号和反斜杠。这应该可以解决问题:

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

请注意,您还需要在Objective-C字符串中转义反斜杠,如上所示。

答案 1 :(得分:1)

事实证明,它不足以逃脱单引号字符。我还需要转义/ n和/ r以使这一点适用于所有HTML。

我可能会遗漏一些其他角色,如果我找到一个案例,我会发布它。