次のような非標準の属性を持つ方法はありますか
onselectstart
oncontextmenu
...
タグで、それでもHTML 4.01トランジショナルとして検証に合格しますか?
後でJavascriptを使用してプロパティを追加することは別として。
次のような非標準の属性を持つ方法はありますか
onselectstart
oncontextmenu
...
タグで、それでもHTML 4.01トランジショナルとして検証に合格しますか?
後でJavascriptを使用してプロパティを追加することは別として。
HTML 4.01 では独自のタグや属性を追加することはできませんが、標準の HTML タグや属性を使用して情報を含めるのが一般的な手法です (仕様に従って厳密に正しい使用方法でなくても)。たとえば、'class' 属性は、ほぼすべての種類のデータを格納できます。
<a href="#" id="user-link-1" class="username:matt email:matt@example.com">Matt</a>
上記のリンクのクラスを取得し、「クラス」属性を分割してデータを取得できます。
カスタム データに使用されている他のタグと属性: <script>
JavaScript 以外の「タイプ」値を持つタグ、非表示の入力値、さまざまなタグの「タイトル」属性。
HTML 4 からの変更を気にしない場合は、他にもいくつかのオプションがあります。
JavaScript を介して実行時に HTML ドキュメントにカスタム属性を追加することもできます。例えば:
var body = document.getElementsByTagName("body")[0];
body["my-attribute"] = "Hello, world!";
alert(body["my-attribute"]);
これは、情報が動的で、マークアップに保存する必要がまったくない場合に役立ちます。
これらの属性を使用すると、無効なドキュメントが生成されます。
後で Javascript を使用してこれらの属性を追加すると、無効なドキュメントが生成されます (W3C バリデーターがそのように通知できない場合でも)。
しかし、W3C は独自の拡張機能の使用に反対したことはありません。検証は必須ではありません。仕様に適合していない場合に通知する方法です。W3C は、無効なページについてのみ FBI を送信しません。
ビジターにより良いエクスペリエンスを提供するためにプロプライエタリな拡張機能に依存している (ただし、それに依存していない) 場合は、良い道を進んでいます :-) それらが次の仕様に含まれるように祈る (または貢献する) だけです。
ブラウザのコンテキスト メニューや選択を防止することが目的である場合、それはただの失礼です。それをしないでください!
いいえ、そうではありません。言語に準拠しながら、言語に物事を追加する余地はありません。
私が過去に行ったことの1つは、スライドショーなどで一般的に使用される「データ」を使用することです。ただし、「スタイル」属性で行うのと同じ方法で必要なデータを書き出します。
<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 では有効であると強調されています。