在HTML5中实现自定义标记名称空间

Custom tag namespace implementation in HTML5

本文关键字:空间 自定义 HTML5 实现      更新时间:2023-09-26

对于我正在构建的音频播放器,我希望有一个类似于Google和Facebook用于其共享小部件的标记。例如,它可以是:

<fp:player data-type="mp3" data-href="/path/to/file.mp3" />

实现这个自定义标签的最好方法是什么,并使它在尽可能多的浏览器中有效?

上述链接的规范声明,

用户代理必须处理它们不处理的元素和属性理解为语义中立的;将它们留在DOM中(用于DOM)处理器),并根据CSS样式化它们(对于CSS处理器),但不能从中推断出任何意义。

如果我对规范的理解正确的话,Quentin发布的引用是指用户代理扩展。(我假设他们指的是特殊的浏览器和浏览器插件)用户代理不应该创建新的标签或属性。Web开发人员可以使用他们喜欢的任何组成的标记和属性。该规范明确指示用户代理开发人员考虑未知的标签和属性,并将它们包含在DOM和呈现页面时。

用脚本访问它们就变得有点棘手了。IE的7和8为您添加一个名称空间来查找那些自定义标签,这使得您的文档在技术上无效——但仍然功能齐全!

请看这里(我的博客):http://blog.svidgen.com/2012/10/building-custom-xhtml5-tags.html

来自HTML规范:

对于打算与HTML语法一起使用的标记级特性,扩展应该限制为"x-vendor-feature"形式的新属性,其中vendor是标识负责扩展的供应商的短字符串,feature是特性的名称。不应该创建新的元素名

所以你不能创建它并符合规范,Facebook和谷歌非常非常淘气。

你似乎在试图重新发明<audio>元素。所以只要使用它,扩展语言的问题就解决了。

观察html5shim或html5shiv如何创建新元素:https://github.com/aFarkas/html5shiv/blob/master/src/html5shiv.js

基本上你只需要document.createElement()元素,然后你就可以使用它了