2012-08-13 35 views
18

Sto scrivendo un corso introduttivo HTML. Ricordo di aver scoperto 9 anni fa mentre stavo imparando l'HTML che sia <img> sia <image> funzionavano come tag per la visualizzazione delle immagini, almeno in IE. Infatti, <image> funziona ancora nelle ultime versioni dei 5 migliori browser.<img> vs <image> tag in HTML

Mi rendo conto che <image> non è corretto e non verrà convalidato con http://validator.w3.org. Tuttavia, qualcuno è a conoscenza di un browser che non visualizzerà un'immagine se viene utilizzato <image> anziché <img>?

Inoltre, presumo che i browser moderni visualizzino le immagini create con il tag <image> semplicemente perché è un errore comune che i principianti fanno. Questa supposizione è corretta?

+10

Non perché si tratta di un "errore principiante", ma perché "i siti danneggiati lo usano, e i browser moderni devono aiutare quei siti a zoppicare" ... dal momento che stai insegnando un corso puoi garantire che vengano scritti meno siti danneggiati: * solo * 'img' è valido/corretto/accettabile. :) –

+0

Ho notato che molti principianti usano erroneamente l'immagine invece di img nel mio corso interattivo (http://codeavengers.com) anche se dichiaro esplicitamente che devono stare attenti a usare img e NON l'immagine. Un numero di utenti mi aveva scritto confuso riguardo al messaggio di errore che diceva che dovevano usare img e NON immagine perché l'immagine è INVALIDA ... anche se l'immagine sembra perfettamente visualizzata! – Mike

+0

Basta richiedere il 100% di validazione w3c * o * una giustificazione per [validità] su tutti i compiti - quindi se * possono * giustificare 'immagine', ma se non possono .. :) –

risposta

16

Sì e no. Come hai sottolineato <image> è stato sinonimo di <img> per molto tempo. Credo che sia stato uno dei primi browser di Netscape a farlo per prima, forse per compensare l'errore dell'utente, o forse perché al momento esisteva una disputa se l'elemento dovesse essere chiamato <image> o <img>.

In ogni caso, come sottolinea pst, una volta implementato in un browser che dominava il mercato del tempo, le pagine web si affidavano a esso. La sua persistenza è quindi ridotta alla pressione commerciale sui produttori di browser. Se tutti i principali browser lo supportano, il browser A decide che, sebbene sia supportato nella versione V, non lo supporterà nella versione V + 1, non appena viene rilasciata la versione V + 1, ricevono molti messaggi che dicono " Il sito S è rotto nel tuo browser più recente, il browser è spazzatura e sto per passare al browser B ".

La HTML5 analisi specifica richiede che il tag <image> viene mappato all'elemento img in fase di costruzione dell'albero, quindi non può mai essere una giustificazione per il suo utilizzo.

Sarei meno preoccupato per i browser, rispetto ad altri utenti HTML, come i motori di ricerca meno conosciuti. Credo che il sinonimo image per img non sia ampiamente noto e che molti di questi strumenti non riescano quindi a raccogliere <image> come riferimento a una risorsa immagine.

+0

Non ho notato che le specifiche di analisi HTML5 richiedono che il tag immagine sia mappato su img. Mi fa piacere che tu l'abbia menzionato come stavo assumendo in una delle mie lezioni su http://codeavengers.com che il tag immagine sarebbe apparso nell'albero DOM se lo studente avesse commesso quell'errore. – Mike

0

Infatti. I browser moderni mostreranno il codice che non è valido per assicurarsi che i vecchi siti Web continuino a essere visualizzati correttamente e il codice leggermente non valido non rovini una pagina.

Ad esempio, dimenticando di chiudere uno <tr> prima di aprirne uno nuovo, tutti i browser moderni presumono semplicemente che l'abbia chiuso.

Non sono a conoscenza di un browser ben utilizzato e aggiornato che non visualizzerà un tag <image>, ma visualizzerà un tag <img>.

+5

Secondo [whatwg] (http://www.whatwg.org/specs/web-apps/current-work/multipage/syntax.html#syntax-tag-omission) '' è facoltativo. Se ometti i tag '', la tua pagina continuerà a essere valida. Quindi non sono sicuro che l'esempio '' sia il miglior esempio per questa domanda. – Mike

4

Ho appena terminato il debug di questo problema, che stavo commettendo, non avendo precedentemente letto le risposte di cui sopra.

Anche se non è un browser completo, un client di posta viene spesso utilizzato come se fosse un browser.

Ho scoperto, nel modo più duro, che il client Gmail di Android, utilizzando l'HTML nudo (con una specifica DTD nuda predefinita), presenta questo problema. Risponde solo a <img /> [cioè, non <image />]. gmail.com va bene con <image />, ma non con il client gmail per Android.

Mentre un client di posta elettronica non è realmente un browser, ho pensato che potreste essere interessati comunque.

+3

Benvenuti in Stack Overflow! Ho corretto la formattazione del tuo post in modo che l'HTML si presenti. Per riferimento futuro, i blocchi di codice possono essere formattati indentandoli con quattro spazi, il codice inline può essere formattato circondandolo con apici inversi ('). Puoi anche selezionare il tuo codice e fare clic sul pulsante ** {} ** nell'editor. – Stijn