簡體   English   中英

AngularJS指令中自定義HTML標記的后果

[英]Consequences of Custom HTML Tags in AngularJS Directives

假設我在AngularJS中編寫了一個自定義gravatar指令,該指令綁定到作用域上的email屬性。 該指令將取代此HTML ...

<gravatar email="user.email" />

通過一個常見的img標簽,其src屬性設置為正確的Gravatar url:

<img src="http://gravatar.com/avatar/..." />

我的問題可能有點寬泛甚至天真,但最初在我的網頁的HTML中有<gravatar />標簽“有多糟糕”? 除了沒有通過W3C驗證之外,還有任何“現實世界”的后果嗎?

W3C說

作者不得將元素,屬性或屬性值用於除適當的預期語義目的之外的目的,因為這樣做會阻止軟件正確處理頁面。

作者不得使用本規范或其他適用規范不允許的元素,屬性或屬性值,因為這樣做會使語言在將來更難擴展。

http://www.w3.org/html/wg/drafts/html/master/dom.html#elements

自定義元素/屬性沒有語義值,應該避免這些原因。

您可能不會注意到任何直接后果。 畢竟,角本身使用非確認ng屬性(盡管它們與支持data-前綴為好)。

您可能遇到的唯一可能問題是,如果您引入的元素當前是自定義元素,則該元素將成為規范的一部分,並且具有與您之前所期望的不同的行為,但我認為這種可能性極小。 即便如此,如果可以,我會避免使用任何自定義的東西。

最終,您將能夠注冊自己的自定義元素 ,但據我所知,沒有瀏覽器支持此規范。

雖然頁面主體的初始源(在角度處理ng-app元素之前)可能不符合W3C標准,但如果在指令中使用“replace:true”,則自定義元素將替換為模板HTML,該模板可以有效。 因此,在這種情況下,您可以將角元素視為僅用終端HTML輸出替換的占位符。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM