有没有办法拥有像
这样的非标准属性onselectstart
oncontextmenu
...
在一个标签中,仍然以某种方式通过HTML 4.01过渡验证?
除了稍后使用Javascript添加属性。
答案 0 :(得分:5)
使用这些属性将生成无效文档。
稍后使用Javascript添加这些属性将生成无效文档(即使W3C验证程序无法告诉您)。
但W3C从未反对使用专有扩展。验证不应成为要求。这是一种告诉你何时不符合规范的方法。 W3C不会仅针对无效页面发送FBI。
如果您依靠专有扩展来为您的访问者提供更好的体验(但不依赖于它),那么您就走上了良好的道路:-)只需为那些符合下一个规范的人祷告(或做出贡献)。< / p>
现在,如果它是关于阻止浏览器上下文菜单或选择,那就太粗鲁了!不要这样做!
答案 1 :(得分:5)
虽然您无法在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"]);
如果您的信息是动态的,并且根本不需要存储在标记中,这将非常有用。
答案 2 :(得分:2)
答案 3 :(得分:2)
不,不是。在符合语言的情况下,没有空间可以添加语言。
答案 4 :(得分:0)
我过去做的一件事就是使用&#34;数据&#34;,这通常用于幻灯片等。但是你需要用与#中相同的方式写出你需要的数据。 34;样式&#34;属性。
<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;
}
与其他几个人提到的那样,世界末日并不是有效的。就像我说的那样,&#34;数据&#34;是常用的,甚至在某些IDE中突出显示为有效。