0

我有以下代码

<p>
  <%= sanitize "<p>This is a test</p>" %>
</p>

我希望经过清理的 html 会出现在<p></p>. 然而它会产生。

<p>
      </p>
<p>This is a test</p> 

当我将封闭更改<p></p>为 时<div></div>,经过清理的 html<div></div>会按我的预期显示在两者之间。

为什么在<p></p>从封闭标记中删除经过处理的 html 并将其放在封闭标记之后之间的 html 清理?

如何让经过消毒的 html 显示在其中<p></p>

4

3 回答 3

1

嵌套段落标签是不合法的;该<p>标签只接受短语内容标签

这就是 Chrome 开发工具显示更改顺序的原因 - 浏览器正在尽可能地纠正错误并将内部<p>移出并靠近它。

于 2013-12-15T19:22:30.453 回答
0

这是一个 HTML 规范的东西。列表不应该在段落标签中。

更多关于 这里

于 2013-12-15T19:26:38.600 回答
0

sanitize 方法不删除的原因<p><p>标签在默认允许的标签列表中。完整名单是:

del, dd, h3, address, big, sub, tt, a, ul, h4, cite, dfn, h5, small, kbd, code,
b, ins, img, h6, sup, pre, strong, blockquote, acronym, dt, br, p, div, samp,
li, ol, var, em, h1, i, abbr, h2, span, hr

更多信息:http ://apidock.com/rails/ActionView/Helpers/SanitizeHelper/sanitize

于 2013-12-15T19:26:58.567 回答