簡體   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