[英]AngularJS directives as "custom" HTML tags: isn't this dangerous and may conflict with future HTML versions?
[英]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.