我有一个关于Rails 3如何与XHTML文档类型一起工作的简单问题。既然Rails 3使用UJS进行ajax调用(甚至是像delete这样的普通调用),并且使用HTML5数据属性,那么,既然XHTML不支持数据属性,那么标记会自动失效吗?
最佳答案
data-*
属性在XHTML5中有效,aa>是HTML5的编码之一。它们在XHTML1.0中无效,但这可能不是什么大问题。
最有可能的情况是,如果您将内容提供给现实世界的浏览器,它们将其解析为HTML,而不是XHTML。如果您的内容是text/html
,浏览器会将其解析为HTML。如果你把它当作application/xhtml+xml
,IE 6将把它呈现为原始XML,而不是HTML,在其他浏览器中,如果你犯了一个小错误,他们将停止解析它并显示一条难看的错误消息,而不是继续尝试解析其余的内容。如果您将它作为text/html
,那么浏览器将把它解析为text/html
,所以它是否有效的XHTML并不重要。
即使它是无效的XHTML1.0,它仍然格式良好,而且web浏览器没有验证用户代理,所以内容是否有效并不重要。data-*
属性的全部目的是为页面上的脚本提供私有数据。由于data-*
属性并不能阻止文档的良好格式,浏览器仍然可以很好地解析文档,因此无论数据是否有效,脚本都可以访问数据。
结果是:这些属性在HTML5和XHTML5中是有效的。它们在XHTML1.0中无效,但这并不重要,因为这些属性将在所有主要浏览器中工作,为页面上的脚本提供私有数据。