这个话题在办公室变成了激烈的讨论,所以我很想知道你的想法.
我们正在开发一个仅针对某些特定浏览器的网络应用.这些浏览器目前包括不同风格的Opera 9和Mozilla 1.7.12.在未来,我们可能还需要支持Opera 10和不同版本的WebKit.但我们不太可能不得不处理任何版本的IE.
我们的网络应用程序在其doctype中声明HTML 4.0严格.
最近,我提出了在HTML中使用自定义属性作为特定问题的解决方案.我提出了一些看起来像这样的东西:
...
由于这不是有效的HTML 4,它与我们的HTML人员并没有很好地相关,我们陷入了争论.
我的问题是:如果有的话 - 使用自定义属性的风险是什么?我知道页面不会验证,但是并非所有浏览器都忽略了他们不知道的属性?或者可以想象一些浏览器会改为"quirks模式"并将页面呈现为严格的HTML 4.0之外的其他内容?
更新:
Hilited提出的实际问题.
没有浏览器限制/风险.只有w3验证器会吠叫,但吠叫狗不会咬人.
在W3规范说以下内容:
如果用户代理遇到它无法识别的属性,则应忽略整个属性规范(即属性及其值).
有些人可能会认为,IE也不会以怪癖模式呈现.它只会对无效/强制文档类型执行此操作,而不会对无效属性执行此操作.
但是,请记住,一些Javascript库/框架将"无形地"在DOM树中添加/使用自定义HTML属性,例如几个jQuery插件.这样,您可能会冒着属性冲突的风险,因为"巧合"会使用与您自己的目的相同的属性.遗憾的是,这通常很糟糕甚至没有记录.
HTML 5允许使用'data-'前缀的自定义属性,请参阅http://ejohn.org/blog/html-5-data-attributes/
如果它的目标是保持有效的html4.0严格,那么为什么要放入自定义属性并不重要,你就是打破了目标.
我认为你需要问的问题是,为什么你需要打破4.0严格来获得你想要的功能:你可以使用自定义属性的任何东西,你可以在现有属性中使用a:
...
可能:
...
解析所有类信息将是一些额外的周期,但只要你不在该类上放置任何css信息,它就不会改变显示,不会让你处于怪癖模式,也不会得到你在工作中打架.