2012-03-09 11 views
5

Firefox ha una certa tolleranza durante il rendering di HTML errato. Ciò significa che anche se un tag di chiusura viene omesso, l'HTML verrà visualizzato come se tutto fosse a posto. Questo aspetto di tolleranza è particolarmente rilevante quando si utilizza JavaScript per manipolare o aggiungere contenuti nella pagina corrente.Disabilita tolleranza (o abilita severità) in Firefox durante il rendering di HTML

Dal momento che utilizzo Firefox come browser principale di test/sviluppo, sono stato più volte turbato da questo comportamento il cui effetto è la perdita di funzionalità nei browser "più rigidi". Ad esempio, lo stesso codice in Microsoft Internet Explorer non è riuscito a produrre alcun output visibile a causa del tag mancante menzionato sul contenuto aggiunto.

Ora la domanda è, c'è un modo per dire a Firefox di essere più severo riguardo l'HTML accettato e fallire invece di "indovinare una correzione" per esso (specialmente quando l'HTML viene aggiunto tramite JavaScript)?

PS: Ho provato a giocare con il DOCTYPE ma i risultati sono stati gli stessi.

+1

Immagino che firefox sia rigoroso solo per XTHML (con il doctype corretto) – Aprillion

+0

Puoi mostrare un esempio di un file che viene reso OK da Firefox ma interrompe (fino al punto di non visualizzare nulla) in IE? La mia esperienza è che errori come i tag finali mancanti sono gestiti più o meno lo stesso in tutti i principali browser. Certo, i diversi browser gestiscono gli errori in modo diverso, ma solitamente non così male. –

+0

@MrLister lavorerà su di esso e aggiornerà la domanda – Unode

risposta

1

Tutti i parser perdonano in una certa misura. La maggior parte dei siti tradizionali ha degli errori (non che questo lo renda scusabile, solo dicendo). Se sviluppi con un debugger collegato, rileverai gli errori di script molto più rapidamente. Rilevo anche errori di script usando un minificatore nel mio processo di compilazione (che fallirà nei principali problemi di sintassi). Valido il mio markup HTML usando gli avvisi in tempo reale di Visual Studio 2010 (che non sono sempre perfetti) e periodicamente uso il servizio validator w3.

Per la scelta del browser, di solito sviluppo su tutta la linea; in una sola seduta posso letteralmente passare da IE7/8/9, Chrome e Firefox. Safari e Opera di solito funzionano se i suddetti browser sono coperti. In questo modo non mi allontano troppo da un percorso errato.

BTW, DOCTYPE è importante (anche se non sembra sempre così).

+0

Come si convalida l'HTML assemblato in JavaScript? Non esiste prima dell'esecuzione ... – Unode

+0

@Unode - buona domanda. Mi baso in gran parte su un framework (come jQuery) per creare un markup ben strutturato (sebbene possa ancora essere non valido, ad esempio tag illegalmente nidificati). Se stavo generando una grande quantità di markup, probabilmente lo avrei scaricato in una finestra di console prima che il browser lo formattasse/rielaborasse. Poi lo ispezionerei visivamente o lo incollerei in un validatore. Ora che ne parli, avere un modo più elegante per farlo sarebbe bello. –

+0

@Unode in Firefox, seleziona tutto, tasto destro del mouse + "Mostra sorgente selezione" mostrerà il contenuto generato! –

1

Ho scoperto che è meglio abbattere e fare il tuo lavoro principale in IE.

Se si utilizza un buon doctype (<! DOCTYPE html >) e impostare l'intestazione x-ua-compatibile in modalità IE8, il lavoro supplementare che devi fare per fare un lavoro di app/guardare bene in altri browser è minima .

+0

Lavorare principalmente con IE è una soluzione difficile poiché Windows non è l'ambiente di sviluppo.Non avevo familiarità con l'intestazione compatibile con x-ua, mi sembra una magia nera :) – Unode

2

Non utilizzare i browser per controllare il codice HTML; non sono progettati per farlo. Utilizzare un validatore effettivo, ad esempio the W3C's validator. C'è appear to be molte estensioni di Firefox che convalideranno la pagina con un clic o automaticamente, anche se non ho familiarità con loro dato che non utilizzo Firefox come browser principale.

+0

Persino Notepad ++ ha plugin per questo, ad es. TextFX> 'TextFX HTML Tidy' – Aprillion

+0

VALIDATORE HTML http://users.skynet.be/mgueury/mozilla/ è un buon validatore – Variant

+0

Il problema è che, se l'HTML viene manipolato con Javascript, il" codice sorgente "non è più un file flat ed è invece parte del DOM nel browser. In questo caso, la tolleranza è già avvenuta e qualsiasi convalida del browser non riuscirebbe a identificare errori post-JavaScript. Uso l'estensione @Variant menzionata e ha un "Convalida dopo la manipolazione JavaScript", ma può trovare solo un sottoinsieme di errori che in alcune condizioni è risultato insufficiente. – Unode