2008-11-26 97 views
4

内逸出的html逸出的html是好的 - 它会删除小号等注释标记

我在哪里输出注释标记如内部文件名香港专业教育学院碰到一个问题<的和>“。 <!-- ${filename} -->

当然

如果你不逃,所以它成为东西可不好: <!-- <c:out value="${filename}"/> -->

的问题是,如果文件中有“ - ”的名字,所有的HTML被拧紧,因为您选择不允许有<!-- -- -->

标准的html逃脱不会逃脱这些破折号,我想知道是否有人熟悉简单/标准的方式来逃脱他们。

回答

5

Definition of a HTML comment

注释声明开始与<,后跟零个或更多的评论,然后>!注释以“ - ”开头和结尾,并且不包含任何“ - ”。

当然,解析评论取决于浏览器。

这里没有什么让我明白的解决方案,所以我建议你str_replace这些双破折号。

0

有没有好办法解决这个问题。你不能逃避它们,因为评论是以明文形式阅读的。你将不得不做一些事情,比如在连字符之间放一个空格,或者使用连字符的某种代码(如[HYPHEN])。

0

在html中没有通用的工作方式来转义这些字符,除非 - 字符是4的倍数,所以如果你这样做 - 它不会在Firefox中工作,但会工作。所有这一切都取决于浏览器。例如,在Internet Explorer 8中,这不是问题,这些字符可以正确转义。谷歌浏览器也是如此......然而Firefox甚至是最新的浏览器(3.0.4),它并没有很好地处理这些字符的转义。

0

由于您不能直接显示' - ',您可以对其进行编码,也可以使用fn:escapeXml或fn:替换标签进行适当的替换。 JSTL documentation

0

你不应该试图HTML逃逸,评论的内容不是允许脱离和它的罚款有裸装“>”或“&”内。

' - '是它自己的,不相关的问题,并不是真正可以解决的。如果你不需要恢复确切的字符串,只需做一个替换来摆脱它们(例如,用'__'替换)。

如果确实需要通过完全不受干扰到JavaScript将要阅读评论的内容,以得到一个字符串,使用字符串字面:

<!-- 'my-string' --> 

该脚本就可以读取使用eval(commentnode 。数据)。 (是的,最后eval()的有效用法!)

然后你逃避的问题变成了如何把事情JS字符串文字,这是逃避“”“和‘比较容易解决 - ’字符:

<!-- 'Bob\x27s\x2D\x2Dstring' --> 

(你或许应该也难逃” <','&'和'“',以防万一您想要使用相同的转义方案将一个JS字符串文字放入<脚本>块或内联处理程序中。)