2013年10月29日 星期二

HTML 連結的 target 使用 _new ?

今天看到一個網頁連結的 HTML 語法
<a href="aa.html" target="_new">test</a>

target 的值設成 _new
看到時我有點汗顏,因為我居然不知道 target 的保留字有 "_new"
我以為是新的規範,所以查了一下資料
HTML5:http://www.w3.org/TR/html5/browsers.html#browsing-context-names
HTML4.01:http://www.w3.org/TR/html401/types.html#type-frame-target

結果發現,target 真的沒有 _new 這個保留字,
target 的保留字只有 _blank、_self、_parent、_top 四個

那為什麼會出現 target="_new" 的這種寫法,用底線開始的不是保留字嗎?
(W3C HTML5 規範中有一句說明:Names starting with an underscore are reserved for special keywords.)

查了一些 HTML 教學網頁,
發現很多教學網頁都把 "_new" 當成 target 的預設選項之一。
並說明 "_new" 跟 "_blank" 的不同之處在於
"_new":新開的視窗都會在同一個
"_blank":則會一直開新的不同視窗

但其實根本沒有 "_new" 這個預設選項,如果把 "_new" 隨便改成其他字,
例如將 "_new" 用 "cat" 替代,效果也一樣。
<a href="aa.html" target="cat">test</a>

而且,如果網頁中剛好有一個 iframe 的 name="_new"
那 target="_new" 的寫法,將不會新開視窗,而是開在 iframe 裡面。
(我測了 IE10、firefox、chrome 都是如此)


也難怪在 stackoverflow 有人說
"Therefore my suggestion is: Don't use _new!"
http://stackoverflow.com/questions/4964130/target-blank-vs-target-new


結論:
"_new" 跟其他不是保留字的自訂名稱,其實沒什麼差別。


其他:
後來我發現 Drameweavr CS5.5 也把 "_new" 放在 target 預設選項裡,個人倒是覺得蠻奇怪的。

沒有留言:

張貼留言