HTML5 中的自定义标签命名空间实现

发布于 2024-12-21 12:27:25 字数 203 浏览 1 评论 0原文

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

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

实现此自定义标记的最佳方法是什么,并使其在尽可能多的浏览器中有效?

For an audio player I'm building, I'd like to have a tag similar to what Google and Facebook use for their share widgets. For example, it could be:

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

What's the best way to implement this custom tag, and have it be valid in as many browsers as possible?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

月野兔 2024-12-28 12:27:25

上述链接的规范指出,

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

如果我正确理解了规范,昆汀发布的报价是指用户代理扩展。 (我认为它们指的是特殊的浏览器和浏览器插件。)用户代理不应创建新的标签或属性。 Web 开发人员可以使用他们喜欢的任何虚构标签和属性。该规范明确指示用户代理开发人员考虑未知的标签和属性,并将它们包含在 DOM 中以及渲染页面时。

使用脚本访问它们是有点棘手的地方。 IE 7 和 8 允许您添加命名空间来查找这些自定义标记,这会使您的文档在技术上无效 - 但仍然完全正常工作!

请参阅此处(我的博客): http://blog.svidgen.com/2012/10/building-custom-xhtml5-tags.html

The above-linked specification also states,

User agents must treat elements and attributes that they do not
understand as semantically neutral; leaving them in the DOM (for DOM
processors), and styling them according to CSS (for CSS processors),
but not inferring any meaning from them.

Quentin's posted quote, if I understand the specification correctly, is referring to user-agent extensions. (By which I assume they mean both special browsers and browser plugins.) User-agents should not create new tags or attributes. Web developer can use whatever made-up tags and attributes they like. And the specification explicitly instructs user-agent developers to account for unknown tags and attributes, and include them in the DOM and when rendering the page.

Accessing them with script is where it becomes a little tricky. IE's 7 and 8 for you to add a namespace to find those custom tags, which makes your document technically invalid -- but still fully functional!

See here (my blog): http://blog.svidgen.com/2012/10/building-custom-xhtml5-tags.html

这样的小城市 2024-12-28 12:27:25

来自HTML 规范

对于旨在与 HTML 语法一起使用的标记级功能,扩展应仅限于“x-vendor-feature”形式的新属性,其中供应商是一个短字符串,用于标识负责扩展的供应商,feature 是特征的名称。 不应创建新元素名称

因此您无法创建它并符合规范,Facebook 和 Google 非常非常顽皮。

您似乎正在尝试重新发明 无论如何, 元素 。因此,只要使用它,扩展语言的问题就消失了。

From the HTML specification:

For markup-level features that are intended for use with the HTML syntax, extensions should be limited to new attributes of the form "x-vendor-feature", where vendor is a short string that identifies the vendor responsible for the extension, and feature is the name of the feature. New element names should not be created

So you can't create it and conform to the specification and Facebook and Google are very, very naughty.

You appear to be trying to reinvent the <audio> element anyway. So just use that and the problem of extending the langage goes away.

ぃ双果 2024-12-28 12:27:25

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

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

observe how the html5shim or the html5shiv create new elements: https://github.com/aFarkas/html5shiv/blob/master/src/html5shiv.js

essentially you just have to document.createElement() the element, then you can use it.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文