使用自定义HTML属性在HTML4 Strict中的具体风险是什么?

12 浏览
0 Comments

使用自定义HTML属性在HTML4 Strict中的具体风险是什么?

这个话题在办公室引发了激烈的讨论,所以我很想知道你的想法。我们正在开发一个只针对特定浏览器的Web应用程序。目前这些浏览器包括不同版本的Opera 9和Mozilla 1.7.12。将来我们可能还需要支持Opera 10和不同版本的WebKit。但我们几乎不太可能需要处理任何IE版本。我们的Web应用程序在doctype中声明了HTML 4.0 strict。最近,我提出了在HTML中使用自定义属性作为解决特定问题的方案。我提议的内容看起来像这样:...由于这不是有效的HTML 4,所以HTML人员对此持不同意见,我们发生了争论。我的问题是:使用自定义属性有哪些风险(如果有的话)?我知道页面无法通过验证,但是所有浏览器都会忽略它们不了解的属性,对吗?还是有可能某些浏览器会切换到“怪异模式”,以非严格的HTML 4.0方式呈现页面?

0
0 Comments

使用自定义HTML属性在HTML4 Strict中的具体风险是什么?

如果我们的目标是保持有效的html4.0 strict,那么无论你为什么要添加自定义属性,你都违反了这个目标。

我认为你应该问的问题是,为什么你需要违反4.0 strict来获得你想要的功能:任何你想要使用自定义属性的地方,你都可以在现有属性中使用一个class

<span translationkey="someKey">...</span>

可以改为:

<span class="Translationkey">...</span>

这样会额外增加一些解析所有class信息的开销,但只要你不在该类上添加任何css信息,它不会改变显示,不会使你进入怪异模式,也不会在工作中引起争议。

我认为遵循标准不应该是一个目标本身。我们使用html4.0 strict是因为我们希望确保特定的浏览器行为。所以我的问题实际上是:使用自定义属性会危及这个目标吗?

回答你的问题:自定义属性在MooTools中非常方便,可以在DOM中查找元素:foo.getElements("[myAttr]")可以找到具有myAttr属性的foo的所有子节点。使用你提议的解决方案会更加复杂,可能更慢。

在class属性中重载信息,然后解析它以提取正确的信息并忽略噪音似乎效率低下且缺乏清晰度。

0
0 Comments

HTML 4 Strict does not support custom attributes, including the 'data-' prefix.

0
0 Comments

使用自定义HTML属性在HTML4严格模式下的具体风险是什么?

自定义HTML属性在浏览器中没有限制或风险。只有w3验证器会发出警告,但是警告并不会产生实际影响。

根据w3规范,用户代理(浏览器)遇到不认识的属性时,应该忽略整个属性规范(即属性和属性值)。

IE浏览器也不会以怪异模式渲染,只有在无效或强制的文档类型下才会如此,而不是在无效属性下。

然而,需要注意的是,一些JavaScript库/框架在DOM树中“隐式”添加/使用自定义HTML属性,例如一些jQuery插件。这样一来,可能会出现属性冲突,因为它“巧合地”使用了与您自己用于特定目的的相同名称的属性。遗憾的是,这种情况经常没有或者甚至根本没有文档记录。

可以使用``来替代HTML5的``,这样w3验证器就不会报错了。

在HTML4严格模式下使用自定义HTML属性的风险并不大,主要的问题是可能与其他JavaScript库或框架中的自定义属性发生冲突。为了避免冲突,可以使用正确的文档类型声明。

0