2012-03-09 12 views
5

Firefox ma określoną tolerancję podczas renderowania złego HTML. Oznacza to, że nawet jeśli tag zamykający zostanie pominięty, kod HTML wyświetli się tak, jakby wszystko było w porządku. Ten aspekt tolerancji jest szczególnie istotny, gdy używa się JavaScript do manipulowania lub dodawania treści na bieżącej stronie.Wyłączanie tolerancji (lub włączania ścisłości) w przeglądarce Firefox podczas renderowania HTML

Ponieważ używam przeglądarki Firefox jako mojej głównej przeglądarki do testowania/rozwijania, niejednokrotnie niepokoi mnie takie zachowanie, którego konsekwencją jest utrata funkcjonalności w "bardziej rygorystycznych" przeglądarkach. Na przykład ten sam kod w Microsoft Internet Explorer nie dał żadnego widocznego wyniku z powodu wspomnianego brakującego znacznika na dodanej zawartości.

Pytanie brzmi, czy jest jakiś sposób, aby powiedzieć Firefoksowi, że jest bardziej rygorystyczny w odniesieniu do akceptowanego HTML i czy nie "zgaduje" (szczególnie gdy kod HTML jest dodawany przez JavaScript)?

PS: Próbowałem grać z DOCTYPE, ale wyniki były takie same.

+1

Domyślam się, że firefox jest ścisły tylko dla XTHML (z poprawnym doctype) – Aprillion

+0

Czy możesz pokazać przykład pliku, który jest renderowany poprawnie przez Firefoksa, ale zrywa (do tego, że nic nie wyświetla) w IE? Z mojego doświadczenia wynika, że ​​błędy, takie jak brakujące znaczniki końca, są traktowane mniej dokładnie tak samo we wszystkich głównych przeglądarkach. Oczywiście różne przeglądarki obsługują błędy inaczej, ale zazwyczaj nie tak źle. –

+0

@MrLister zadziała i zaktualizuje pytanie: – Unode

Odpowiedz

1

Wszystkie parsery są do pewnego stopnia wyrozumiałe. Większość stron głównego nurtu ma błędy (co nie znaczy, że jest to uzasadnione). Jeśli rozwiniesz się z dołączonym debuggerem, znacznie szybciej złapiesz błędy skryptu. Przechwytywam także błędy skryptów, używając minifier w moim procesie kompilacji (co nie powiedzie się w przypadku poważnych błędów w składni). Poprawię mój znacznik HTML za pomocą ostrzeżeń programu Visual Studio 2010 w czasie rzeczywistym (które nie zawsze są doskonałe) i okresowo korzystam z usługi walidatora w3.

Do wyboru w przeglądarce zwykle rozwijam się we wszystkich dziedzinach; w jednym posiedzeniu dosłownie mogę przełączać się między trybami IE7/8/9, Chrome i Firefox. Safari i Opera zwykle działają, jeśli omówiono wyżej wymienione przeglądarki. W ten sposób nie oddalam się zbytnio od błędnej ścieżki.

BTW, DOCTYPE jest ważny (nawet jeśli nie zawsze tak jest).

+0

W jaki sposób sprawdzasz poprawność kodu HTML złożonego w JavaScript? Nie istnieje przed wykonaniem ... – Unode

+0

@Node - dobre pytanie. Bazuję głównie na frameworku (takim jak jQuery), aby utworzyć dobrze sformułowany znacznik (choć może on nadal być nieprawidłowy, np. Nielegalnie zagnieżdżone znaczniki). Jeśli generowałem dużą ilość znaczników, prawdopodobnie zrzuciłbym ją do okna konsoli, zanim przeglądarka sformatuje/przerobi. Chciałbym ją wizualnie obejrzeć lub wkleić do walidatora. Teraz, gdy o tym wspomnisz, bardziej elegancki sposób na to byłoby miłe. –

+0

@Unode w Firefox, wybierz wszystko, kliknij prawym przyciskiem myszy + "Pokaż źródło wyboru" pokaże wygenerowaną zawartość! –

1

Odkryłem, że najlepiej jest po prostu zepsuć i wykonać swoją podstawową pracę w IE.

Jeśli używasz dobrego doctype (<! DOCTYPE html >) i ustawić nagłówek X-UA-kompatybilny do trybu IE8, dodatkowa praca, którą trzeba zrobić, aby wykonać pracę APP/dobrze wyglądać w innych przeglądarkach jest minimalny .

+0

Praca z IE jest trudnym rozwiązaniem, ponieważ system Windows nie jest środowiskiem programistycznym.Nie byłem zaznajomiony z nagłówkiem kompatybilnym z x-ua, wygląda na czarną magię :) – Unode

2

Nie używaj przeglądarek do sprawdzania HTML; nie są do tego przystosowane. Użyj prawdziwego weryfikatora, takiego jak the W3C's validator. Istnieje wiele rozszerzeń przeglądarki Firefox, które sprawdzą poprawność strony za pomocą kliknięcia lub automatycznie, chociaż nie znam się na nich, ponieważ nie używam przeglądarki Firefox jako mojej podstawowej przeglądarki.

+0

nawet Notepad ++ ma wtyczki do tego, np. TextFX> 'TextFX HTML Tidy' – Aprillion

+0

HTML VALIDATOR http://users.skynet.be/mgueury/mozilla/ jest dobrym walidatorem – Variant

+0

Problem polega na tym, że jeśli HTML jest manipulowany przez JavaScript," kod źródłowy "nie jest już płaski plik i zamiast tego jest częścią DOM w przeglądarce. W tym przypadku tolerancja już nastąpiła, a każda walidacja w przeglądarce nie wykryłaby błędów po kodzie JavaScript. Używam wspomnianego rozszerzenia @Variant i ma on "Validate after JavaScript manipulation", ale może znaleźć tylko podzbiór błędów, które w niektórych warunkach okazały się niewystarczające. – Unode

Powiązane problemy