Rails 3 UJS和XHTML

mat*_*sko 2 html xhtml html5 ruby-on-rails custom-data-attribute

我有一个关于Rails 3如何与XHTML doctypes一起工作的简单问题.由于Rails 3使用UJS进行其ajax调用(甚至是普通调用,如删除调用),并且使用HTML5数据属性,因此,由于XHTML不支持数据属性,标记是否会自动无效?

Bri*_*ell 6

这些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中无效,但这并不重要,因为这些属性可以在所有主流浏览器中使用,以便为页面上的脚本提供私有数据.