2012-08-13 79 views
18

我正在編寫一門介紹性的HTML課程。我記得9年前發現,在我學習HTML時,至少在IE中,<img><image>都用作顯示圖像的標籤。的確,<image>仍然可以在5個頂級瀏覽器的最新版本中運行。<img> vs <image> HTML中的標記

我意識到<image>不正確,將不會通過http://validator.w3.org進行驗證。但是,是否有人知道如果使用<image>而不是<img>,將不顯示圖像的瀏覽器?

此外,我認爲現代瀏覽器會顯示使用<image>標記創建的圖像,因爲這是初學者常犯的錯誤。這個假設是否正確?

+10

不是因爲它是一個「初學者的錯誤」,而是因爲「破損的網站使用它,現代瀏覽器需要幫助這些站點跛行」..因爲你正在教一門課程,你可以確保更少破碎的網站被寫入:*只有*'img'有效/正確/可接受。 :) – 2012-08-13 05:28:06

+0

我注意到一些初學者在我的互動課程(http://codeavengers.com)中錯誤地使用圖像而不是img,即使我明確指出他們需要小心使用img和NOT圖像。一些用戶寫信給我,感到困惑,說他們應該使用img而不是圖像,因爲圖像無效......即使圖像看起來完美無缺! – Mike 2012-08-13 05:34:46

+0

只需要100%w3c驗證*或*對所有作業的[有]有效性的理由 - 所以如果他們*可以*證明'圖像',但如果他們不能.. :) – 2012-08-13 05:40:22

回答

16

是的,沒有。正如您指出<image>長期以來一直是<img>的同義詞。我相信這是一個早期的Netscape瀏覽器,首先這樣做,可能是爲了彌補用戶錯誤,或者可能是因爲當時有爭議該元素是否實際上應該被稱爲<image><img>

無論如何,正如pst指出的那樣,一旦它在主導當時市場的瀏覽器中實現,網頁就會依賴它。然後,它的持久性會降低到瀏覽器製造商面臨的商業壓力。如果所有主流瀏覽器都支持它,那麼瀏覽器A決定儘管版本V支持它,但版本V + 1不支持版本V + 1,只要版本V + 1發佈,它們就會收到很多消息說「網站S在你最新的瀏覽器中被破壞,你的瀏覽器是垃圾,我要切換到瀏覽器B「。

HTML5解析規範要求在樹構建階段將<image>標記映射到img元素,因此永遠不會有任何理由使用它。

與其他HTML消費者(比如不太知名的搜索引擎)相比,我不太關心瀏覽器。我相信image對於img的同義詞不是廣爲人知,並且許多這樣的工具因此將無法將<image>視爲引用圖像資源。

+0

我沒有注意到HTML5解析規範要求將圖片標籤映射到img。我很高興你提到它,因爲我在http://codeavengers.com上的課程中假設,如果學習者犯了這個錯誤,圖像標籤將出現在DOM樹中。 – Mike 2012-08-13 23:44:07

0

確實。現代瀏覽器將顯示無效的代碼,以確保舊網站仍能正確顯示,並且稍微無效的代碼不會搞砸頁面。

例如,在打開一個新的之前忘記關閉<tr>--所有現代瀏覽器都會簡單地假定您關閉了它。

我不知道一個使用最新的瀏覽器將無法顯示<image>標籤,但會顯示<img>標籤。

+5

根據[whatwg]( http://www.whatwg.org/specs/web-apps/current-work/multipage/syntax.html#syntax-tag-omission)''是可選的。如果您忽略了''標籤,您的網頁仍然會生效。所以我不確定''這個例子是這個問題的最好例子。 – Mike 2012-08-13 06:09:40

4

我剛剛完成調試此問題,我正在提交,以前沒有閱讀過上述答案。

雖然沒有成熟的瀏覽器,但電子郵件客戶端經常被用作瀏覽器。

我發現,困難的方式是,使用裸HTML(使用默認的裸DTD規範)的Android Gmail客戶端確實會出現此問題。它僅響應<img /> [即不是<image />]。 gmail.com可以使用<image />,但不能使用Android Gmail客戶端。

雖然電子郵件客戶端並不是一個真正的瀏覽器,但我認爲您可能會對此感興趣。

+3

歡迎來到Stack Overflow!我已經修復了您的文章的格式,以便HTML顯示出來。爲了將來的參考,可以通過用四個空格縮進來格式化代碼塊,通過用反引號(')將內聯代碼包圍起來,可以對內聯代碼進行格式化。您也可以選擇您的代碼並在編輯器中點擊** {} **按鈕。 – Stijn 2014-05-15 21:41:48