【问题标题】:Rails 3 UJS and XHTMLRails 3 UJS 和 XHTML
【发布时间】:2010-09-12 02:15:23
【问题描述】:

我有一个关于 Rails 3 如何使用 XHTML 文档类型的简单问题。由于 Rails 3 使用 UJS 进行 ajax 调用(甚至是正常调用,如删除调用),并且通过使用 HTML5 数据属性来实现,那么,由于 XHTML 不支持数据属性,标记会自动失效吗?

【问题讨论】:

    标签: ruby-on-rails xhtml html custom-data-attribute


    【解决方案1】:

    data-* 属性在XHTML5 中有效,这是 HTML5 的编码之一。它们在 XHTML 1.0 中无效,但这可能不是什么大问题。

    如果您将内容提供给现实世界的浏览器,它们很可能会将其解析为 HTML,而不是 XHTML。如果您将内容作为text/html 提供,浏览器会将其解析为 HTML。如果您将其作为application/xhtml+xml 提供,IE 6 会将其呈现为原始 XML,而不是 HTML,并且在其他浏览器中,如果您犯了一个小错误,他们将停止解析它并显示一条丑陋的错误消息,而不仅仅是继续试图解析其余的内容。如果您将其作为text/html 提供,那么浏览器会将其解析为text/html,因此它是否是有效的XHTML 并不重要。

    即使它是无效的 XHTML 1.0,它仍然是格式良好的,并且 Web 浏览器不会验证用户代理,因此内容是否有效并不重要。 data-* 属性的全部意义在于为页面上的脚本提供私有数据。由于data-* 属性不会阻止文档格式正确,因此浏览器仍会很好地解析文档,因此您的脚本将可以访问数据,无论数据是否是有效的 XHTML。

    结果是:这些属性在 HTML5 和 XHTML5 中有效。它们在 XHTML 1.0 中无效,但这并不重要,因为这些属性适用于所有主流浏览器,为页面上的脚本提供私有数据。

    【讨论】:

    • 不错的答案。现在有太多人对严格的有效性盲目地强硬。