我想在 HTML 页面中显示异常跟踪。
一种方法是在异常跟踪中转义 HTML 特殊字符并将其转储到 <pre>
中标签。
虽然它有效,但效率非常低。我认为一种方法是用 CDATA 包装跟踪。我已经试过了,但没有任何显示。
我的问题,这可以做到吗?
这是我微弱的尝试。
<pre><![CDATA[blah, blah, blah with <>
and blah blah blah with &
and more blah, blah]]></pre>
最佳答案
只有当您将页面作为 XML ( application/xhtml+xml
) 提供时,它才会起作用;纯 HTML 中没有 CDATA 部分。大多数 HTML 模式的浏览器只会忽略示例 CDATA 部分。
并 throw <![CDATA[
... ]]>
无论如何,围绕一个字符串不足以包裹它。如果您的跟踪信息具有序列 ]]>
在其中,这将结束 CDATA 部分,您将回到同样的问题。因此,您必须至少进行一次转义才能应对这种情况,如果您无论如何都要进行一次转义过程,您不妨进行一次适当的 HTML 转义。
这就是 CDATA 部分在很大程度上毫无意义的原因。很多人似乎认为这能以某种方式免除他们对逃避问题的思考,但事实并非如此。
无论如何,HTML 转义并不是低效的。这是几个字符串替换。任何网络应用程序 (*) 都会对每个页面进行一百次 HTML 转义。再加一个⟩——⟩特别是对于效率根本不重要的调试案例! —> 没有太大的负担。
(*:好吧,除了 PHP 教程中写得不好的应用程序,显然,其作者甚至从未听说过 htmlspecialchars
。)
关于html - 是否可以在 <pre> 标签内使用 CDATA,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2746803/