我想在HTML页面中显示异常跟踪。
执行此操作的一种方法是在异常跟踪中转义HTML特殊字符并将其转储到<pre>
标记内。
虽然它有效但效率非常低。我认为一种方法是用CDATA包裹跟踪。我已经尝试过,但没有显示任何内容。
我的问题,这可以吗?
这是我的微弱尝试。
<pre><![CDATA[blah, blah, blah with <>
and blah blah blah with &
and more blah, blah]]></pre>
答案 0 :(得分:10)
只有当您将页面作为XML(application/xhtml+xml
)提供时,它才有效;纯HTML中没有CDATA部分。 HTML模式下的大多数浏览器都会忽略示例CDATA部分。
无论如何,在字符串周围投掷<![CDATA[
... ]]>
不足以包裹它。如果您的跟踪信息中包含序列]]>
,则结束CDATA部分,您将遇到同样的问题。所以你必须至少做一次逃脱以应对这种情况,如果你要做一个逃避过程,你也可以做一个正确的HTML逃脱。
这就是CDATA部分毫无意义的原因。许多人似乎认为它在某种程度上贬低了他们考虑逃避问题,但事实并非如此。
无论如何,HTML转义并不是低效的。这是几个字符串替换。任何Web应用程序(*)都会在每个页面上进行一百次HTML转义。再添加一个 - 特别是对于效率根本不重要的调试案例! - 没有很大的负担。
(*:好吧,除了来自PHP教程的写得不好的应用程序,其作者从未听说过htmlspecialchars
,显然。)
答案 1 :(得分:1)
是的,但仅限于XHTML(理论上,我认为它应该在HTML中工作,但是Web浏览器处理标记汤而不是HTML 4.x)而不是如果您将文档作为text / html(您必须使用)如果您希望它与Internet Explorer一起使用)。
就效率而言,将<
,&
和>
替换为各自的实体是任何编程语言(或具有Find&amp; Replace工具的文本编辑器)中的一项简单操作),除非在极其有限的带宽条件下,否则不会增加大量字节。