[英]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"]);
如果您的信息是動態的,並且根本不需要存儲在標記中,這將非常有用。
不,不是。 在符合語言的情況下,沒有空間添加語言。
我過去做過的一件事就是使用“數據”,它通常用於幻燈片等。但是要像在“樣式”屬性中那樣寫出所需的數據。
<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.