如何以有效的方式添加非标准属性

Pek*_*ica 3 html javascript validation w3c-validation

有没有办法让非标准的属性像

onselectstart
oncontextmenu 
...
Run Code Online (Sandbox Code Playgroud)

在标签中,仍然以某种方式通过HTML 4.01过渡验证?

除了稍后使用Javascript添加属性.

Vin*_*ert 5

使用这些属性将生成无效文档.

稍后使用Javascript添加这些属性将生成无效文档(即使W3C验证程序无法告诉您).

但W3C从未反对使用专有扩展.验证不应成为要求.这是一种告诉你何时不符合规范的方法.W3C不会仅针对无效页面发送FBI.

如果您依靠专有扩展来为您的访问者提供更好的体验(但不依赖于它),那么您就走上了良好的道路:-)只需为那些符合下一个规范的人祷告(或贡献).


现在,如果是关于阻止浏览器上下文菜单或选择,那就太粗鲁了!不要这样做!


Mat*_*all 5

虽然您无法在HTML 4.01中添加自己的标记或属性,但常用的技术是使用标准HTML标记或属性来包含您的信息,即使根据规范它不是完全正确的用法.例如,'class'属性可以存储几乎任何类型的数据:

<a href="#" id="user-link-1" class="username:matt email:matt@example.com">Matt</a>
Run Code Online (Sandbox Code Playgroud)

您可以检索上面链接的类并将"class"属性拆分为检索数据.

我见过的一些其他标签和属性用于自定义数据:<script>具有非JavaScript"类型"值的标签,隐藏的输入值,各种标签上的"标题"属性.

如果您不介意从HTML 4更改,还有其他几个选项:

您还可以在运行时通过JavaScript 向HTML文档添加自定义属性.例如:

var body = document.getElementsByTagName("body")[0];
body["my-attribute"] = "Hello, world!";
alert(body["my-attribute"]);
Run Code Online (Sandbox Code Playgroud)

如果您的信息是动态的,并且根本不需要存储在标记中,这将非常有用.