39

ほとんどのブラウザーでは、好きな要素タグを作成し、好きな属性名を要素に追加できるようです。例えば:

<!DOCTYPE html>
<html>
<body>
<div my-attribute="has no data- prefix, but seems to behave like an attribute should">
    <br/>
    <hello-world style="display:block;background:#eee">Hello Everybody</hello-world>
    <goodby-world style="background:#faa">Default display is inline</goodbye-world>
</div>
</body>
</html>

上記は正常に表示されます。未定義の要素はスパンのように振る舞うようです。また、AngularJS はカスタム タグと属性をかなり活用しているように見えます。

しかし、私が理解している限り、「data-」プレフィックスを持つカスタム html5 属性の場合を除いて、そのようなことを行うことはノーノーでした。

それで、私の質問は: 独自のカスタム要素タグや属性名を作成することはもはやタブーではありませんか? 別の言い方をすれば、AngularJS は、実際には HTML5 仕様の一部ではなく、たまたま機能する非標準の癖に依存しているのでしょうか? Google の誰かが、長い間失われていた html5 仕様の秘密の章を発見しましたか? それとも私は何かを完全に誤解していますか?

4

4 に答える 4

11

W3C 仕様から:

作成者は、この仕様または [他の該当する仕様][1] で許可されていない要素、属性、または属性値を使用してはなりません。使用すると、言語が将来拡張されるのが著しく難しくなります。

ただし、ページ本文の最初のソース (angular が ng-app 要素を処理する前) は W3C 標準に準拠していない可能性がありますがreplace: true、ディレクティブで使用する場合、カスタム要素は有効なテンプレート HTML に置き換えられます。したがって、この場合、Angular 要素は、端末の HTML 出力に置き換えられる単なるプレースホルダーと考えることができます。

于 2013-12-08T13:35:48.587 に答える
4

これはちょっと独断的ですが、トピックもそうです。Web は今や私たちが作るものであり、非仕様要素を作成/スタイル/変更する能力があります。そして、Angular チームはスペックをあまり気にしないかもしれません。それは最先端であり、あなたが望むことを可能にします。そうは言っても、Angular では、HTML5 仕様を検証して準拠するマークアップを使用して、あらゆることを行うことができます (両方の方法でサポートされているため)。

于 2013-09-06T19:56:54.380 に答える