2012-02-13 11 views
13

Używam świetnego zestawu znaków HTML5. To wielki projekt, ale mam jakieś wielkie problemy z renderowaniem w IE 8 i 7 (ewentualnie 8, ale nie próbowałem jeszcze)Problemy z dokumentacją IE i HTML5

Pliki mają doctype HTML5:

<!doctype html> 
<head> 

Ale problem jest że nie mając pełne i brzydkiego doctype jak ...

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
<html xmlns="http://www.w3.org/1999/xhtml"> 

uzyskać wszelkiego rodzaju świadczenie zagadnienia: centrowanie przez marginesu: auto nie działa, wysokości, szerokości, martings i podkładki wszyscy zachowują się jak szalony i wszyscy moi układ jest zepsuty tylko z <!doctype>, ale jeśli przejdę na stary, wszystko jest w porządku g działa świetnie (no, nie wspaniale, to wciąż IE, ale zgodnie z oczekiwaniami)

HTML5 Boilerplate jest dostarczany z Modernizerem, który moim zdaniem powinien to naprawić, ale to nie działa. Z moich „badań” (Google) Okazało się, że IE wchodzi w tryb dziwactw <!doctype> szerokości, więc pytanie brzmi ...

Czy istnieje sposób, aby zapobiec IE wchodząc w trybie quirks z <!doctype>?

Co najmniej nie łamać marginesów, szerokości, klocków itp.?

Edit: Jest to pełna głowa:

<!doctype html> 
<!--[if lt IE 7]> <html class="no-js lt-ie9 lt-ie8 lt-ie7" lang="en"> <![endif]--> 
<!--[if IE 7]> <html class="no-js lt-ie9 lt-ie8" lang="en"> <![endif]--> 
<!--[if IE 8]> <html class="no-js lt-ie9" lang="en"> <![endif]--> 
<!--[if gt IE 8]><!--> <html class="no-js" lang="en"> <!--<![endif]--> 
<head> 
    <meta charset="utf-8"> 
+0

Jakie było rozwiązanie tego pytania? – pal4life

Odpowiedz

14

IE nie przejdzie w tryb quirks z tego typu dokumentów. Kaseta powinna naprawić problemy IE, nie powodując ich. Brakuje elementu <html> po typie dokumentu. Dodaj to, aby zobaczyć, czy rzeczy się zmieniają. HTML5 tego nie wymaga, ale jeśli go brakuje, albo IE, albo płyta standardowa mogą oszaleć zgodnie z dokumentami.

Po prostu usuń komentarze po typie dokumentu, co powinno spowodować, że problem zniknie.

+1

Nie brakuje mi go, bo ma on: – Juan

+0

@Juan - Następnie musimy zobaczyć kompletny kod, który po prostu zgadujemy. – Rob

+7

Jakie było rzeczywiste rozwiązanie z tej odpowiedzi? – Catfish

7

Spróbuj umieścić to w tagu <head></head>:

<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> 

Jeśli już istnieje, a następnie usunąć go, a może pojawić swoje pożądane wyniki.

+0

jest tam, usunąłem go, ale nic się nie zmieniło – Juan

0

nie jestem zbyt dużo „Wiz”, ale nie będzie to działało zrobić html warunkowego i deklarują HTML 4.01 doctype dla IE8 i poniżej tak:

<!-- HTML 5 doctype --> 
<!doctype html> 

<!-- HTML 4.01 Doctype --> 
<!--[if lte IE 8]> 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" 
"http://www.w3.org/TR/html4/strict.dtd"> 
<![endif]--> 

Jeśli to nie działać w starszych przeglądarkach (ze względu na przeglądarce czytania dwóch doctypes) można spróbować to:

<!DOCTYPE HTML <!--[if lte IE 8]>PUBLIC "-//W3C//DTD HTML 4.01//EN" 
"http://www.w3.org/TR/html4/strict.dtd" 
<![endif]-->> 
+3

Twój komentarz WŁAŚNIE ustawił IE w tryb dziwactwa. Nie możesz umieścić niczego przed doctype. – Rob

6

IE nie przechodzi w dziwactwa z typem dokumentu HTML - o to chodzi!

Co miło o tym nowym DOCTYPE, zwłaszcza, że ​​wszystkie obecne przeglądarek (IE, FF, Opera, Safari) będą patrzeć na niego i przełączanie treści w trybie standardowym - mimo że nie wdrażają HTML5. Oznacza to, że możesz zacząć pisać swoje strony internetowe za pomocą HTML5 dzisiaj i mieć je przez bardzo, bardzo, bardzo długi czas.

(http://ejohn.org/blog/html5-doctype/)

Jednak mając nic przed doctype (znaki nowej linii, komentarze itp) będą.

Sprawdzam, co robisz - typ dokumentu HTML5 nie spowoduje, że Twoja przeglądarka będzie dziwactwem.

0

Prawdopodobnie przechodzi w tryb zgodności z komentarzami warunkowymi. Zalecamy ustawienie strony serwera nagłówkowego x-ua-compatible w pliku .htaccess lub innych plikach konfiguracyjnych serwera.

-4

try DOCTYPE html zamiast doctype html Znacznik doctype rozróżnia wielkość liter, to byłby powód.

+7

Nie jest rozróżniana wielkość liter. –

0

Nie widzę nic złego z zamieszczonymi znacznikami w pełnej głowie. Jest to standardowy znacznik szeroko stosowany w zestawach kotłów obejmujący Modernizr, zręczną bibliotekę JavaScript wykorzystywaną do wykrywania funkcji przeglądarki.

<!doctype html> 
<!--[if lt IE 7]>  <html class="no-js lt-ie9 lt-ie8 lt-ie7" lang="en"> <![endif]--> 
<!--[if IE 7]>   <html class="no-js lt-ie9 lt-ie8" lang="en"> <![endif]--> 
<!--[if IE 8]>   <html class="no-js lt-ie9" lang="en"> <![endif]--> 
<!--[if gt IE 8]><!--> <html class="no-js" lang="en"> <!--<![endif]--> 
<head> 

używam go w moim obecnym aplikacji i uzyskać żadnych problemów w dowolnej przeglądarce. Chociaż używam go tak:

<!DOCTYPE html> 
<!--[if lt IE 7]>  <html class="no-js lt-ie9 lt-ie8 lt-ie7"> <![endif]--> 
<!--[if IE 7]>   <html class="no-js lt-ie9 lt-ie8"> <![endif]--> 
<!--[if IE 8]>   <html class="no-js lt-ie9"> <![endif]--> 
<!--[if gt IE 8]><!--> <html class="no-js"> <!--<![endif]--> 
<head> 

Dla testowania warunkowe komentarzy tzn testowałem na IE9, IE8 i IE7, zarówno z wielkich i małych doctype, tylko dla podwójnej kontroli.

Jedyną dziwną rzeczą Widziałem na IE7, że Czcionki Webfonts (wszystkie cztery w mojej aplikacji) nie powiedzie się, aby uczynić czasem, gdy użyłem <!doctype html> zamiast <!DOCTYPE html>.

FYI: Właśnie sprawdzane i zobaczyć, że HTML5 Boilerplate Project ma removed support for IE conditional comments na Sept 24th 2013. Nie mogę potwierdzić, gdy komentarze warunkowe zostały wprowadzone do projektu, ale można zobaczyć, że na it used to be around the body tag when the project was ported to Github Jan 24th 2010

0

Spróbuj zapisać plik jako UTF-8 bez BOM. Pomogło mi to.