javascript - 这个 HTML 表示法是什么?我该如何使用它?

标签 javascript css html

AddThis 使用的符号似乎扩展了 HTML div 标记中可用的参数。

包含按钮数组的标记可以包含其他参数,例如:

<div addthis:url="someUrl"> </div>

除了为元素定义一些 css 类之外,似乎还赋予 JavaScript 代码访问权限来操作该元素并读取附加 addthis: 参数的值。

我想自己实现类似的东西,但对如何在标准 HTML 标记中正确允许附加参数感到困惑。

我还看到 AddThis 代码有时会抛出 W3C 验证错误,所以想知道这是否完全合法。

搜索周围我发现了一些关于通过扩展 JavaScript 中的原型(prototype)来扩展 HTML 标签的讨论,但我读到的所有内容似乎都是关于添加新事件等。

这个 addthis:url 符号对我来说看起来更像“模式”,或者我完全走错了路?


我已经在这方面取得了一些进展,至少在功能上是这样,但是我现在所取得的成果相当严重地破坏了 HTML 验证。

进一步解释我想要实现的目标......

与 AddThis 一样,您可以通过添加简单的 <DIV> 来包含他们的共享元素。标记到您的页面并包括一些 JavaScript,我想提供类似的功能 <IMG>标签。

想要使用此功能的人将包含 <IMG>标签有一些额外的名称=值对,这些对在标准图像标签属性之外并且由我的规范定义。

其中包含的 JavaScript 将读取这些附加属性并对图像标签执行一些操作。

为此,我有以下内容:

<IMG id="first image" class="imageThatCanBeWorkedOn" src="holding.png"
    my-API-name:attribute1="some data"
    my-API-name:attribute2="some other data">

然后,我使用 `getAttribute('my-API-name:attribute1') 从 JavaScript 访问附加标签数据。

(我将具有特定类名的所有标签选择到一个数组中,然后依次处理每个标签,以防有人感兴趣。)

这一切都很好 - 我可以操纵 <IMG>根据附加数据根据需要标记,但根据 W3C 验证器,标记不是有效的 HTML。

通过以上我得到:

Warning Attribute my-API-name:attribute1 is not serializable as XML 1.0.
Warning Attribute my-API-name:attribute2 is not serializable as XML 1.0.
Error: Attribute my-API-name:attribute1 not allowed on element img at this point.
Error: Attribute my-API-name:attribute2 not allowed on element img at this point.

如果我删除 :从属性名称(例如 my-API-name-attribute2)来看,“不可序列化”警告消失了,但我仍然收到“不允许”错误。

那么我如何将这些额外的数据位添加到 <IMG> 中标记而不是使标记无效,但同时通过以 AddThis 的方式包含“my-API-name”部分来保持一定程度的清晰度/品牌?

(我从评论中注意到我可以使用 data- 属性。我还没有尝试过这些,但我更愿意能够以“品牌”方式做到这一点,AddThis 似乎已经在没有打破了用户的加价。)

最佳答案

如果我们谈论 XML(包括 XHTML),那么它就是命名空间前缀。在 HTML5 中,它只是一个 regular attribute :

Attribute names must consist of one or more characters other than the space characters, U+0000 NULL, U+0022 QUOTATION MARK ("), U+0027 APOSTROPHE ('), U+003E GREATER-THAN SIGN (>), U+002F SOLIDUS (/), and U+003D EQUALS SIGN (=) characters, the control characters, and any characters that are not defined by Unicode.

...虽然稍微难以操作( not too much, though )并且完全不标准。

关于javascript - 这个 HTML 表示法是什么?我该如何使用它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40636208/

相关文章:

html - 使用背景图标拆分 css 边框

javascript - 如何使用 Jquery 或 Javascript 知道一段包含多少个单词?什么功能?

javascript - 在整个代码中使用 AJAX 结果变量

javascript - 如何在 fullpage.js 中应用固定背景

javascript - 我想创建自己的标签,例如 <store></store>、<market></market>

php - Paypal 按钮中的返回设施不起作用

javascript - 在视频 blob :https source 上检测到 404

javascript - 如何知道 HTMLMediaElement 何时完成

html - 固定表格中的列宽,可以搜索和隐藏列

python - 如何使用 cgi 包从 python 发送响应代码