繁体   English   中英

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

[英]How to add non-standard attributes in a valid way

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

onselectstart
oncontextmenu 
...

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

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

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

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

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

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


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

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

<a href="#" id="user-link-1" class="username:matt email:matt@example.com">Matt</a>

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

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

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

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

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

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

不,您必须更改doctype。

<!DOCTYPE HTML>

该doctype将允许您使用自己的属性。 关于此事的一篇好文章

不,不是。 在符合语言的情况下,没有空间添加语言。

我过去做过的一件事就是使用“数据”,它通常用于幻灯片等。但是要像在“样式”属性中那样写出所需的数据。

<div class="your_element" data="onselectstart:foo;oncontextmenu:bar;">
</div>

然后使用jquery来获取数据:

var onSelectStart = getData($(".your_element"), "onselectstart");

功能:

// 
function getData(elementObject, indexString)
{
    var dataElements = elementObject.attr("data").trim().split(";");
    var result = dataElements.some(function(entry) {
        dataArray = entry.trim().split(":");
        if(dataArray[0] == indexString)
        {
            found = dataArray[1].trim();
            return true; // return from "some"
        }
    });
    return result ? found : false;
}

不是有效的并不是世界末日,正如其他几个人所提到的那样。 就像我说的那样,“数据”是常用的,它甚至在某些IDE中突出显示为有效。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM