【问题标题】:Is it expected that jQuery $('span').html() turns XHTML br tag to html syntax?是否期望 jQuery $('span').html() 将 XHTML br 标记转换为 html 语法?
【发布时间】:2009-09-29 06:33:43
【问题描述】:

如果我有这样的跨度标签:

 <span>Hi<br />SecondLine</span>

我称之为 jQuery 函数:

 var html = $('span').html();

html 设置为:

 Hi<br>SecondLine

现在,我意识到函数的名称是 html() 而不是 xhtml()。但这是预期的行为吗?我可以指望它,还是我总是需要检查一个 xhtml br 标签和一个 html br 标签,比如说这个例子:

function br2nl(text) {
    return text.replace(/<br \/>/gi, '\n').replace(/<br>/gi, '\n');
}

【问题讨论】:

  • 您的文档可能被处理为 HTML 而不是 XHTML。
  • 为正则表达式添加了不区分大小写的子句,因为 Firefox 返回小写而 IE 返回大写

标签: jquery html


【解决方案1】:

它没有。它只是修改了浏览器的 DOM。

在使用 innerHTML 时,由浏览器根据需要将 DOM 序列化为 HTML 或 XHTML。不同的浏览器行为不同。

【讨论】:

    【解决方案2】:

    所有浏览器在构建它们的 DOM 树时都会规范化 HTML 代码。因此,javascript 可以访问已经规范化的 DOM。正确关闭所有标签等。

    【讨论】:

      【解决方案3】:

      您实际上并没有使用 XML,因此序列化不使用 XML 语法是有道理的。另见Ian Hickson's essay about sending XHTML as HTML

      【讨论】:

        猜你喜欢
        • 2014-03-30
        • 2014-04-08
        • 2017-01-15
        • 2015-05-19
        • 2016-12-30
        • 2012-04-23
        • 1970-01-01
        • 2011-03-09
        • 2010-09-13
        相关资源
        最近更新 更多