Document#
Document.compatMode#
Właściwość compatMode
zwraca informację pozwalającą ustalić tryb renderowania dla danego dokumentu. Właściwość jest tylko do odczytu.
Opis działania#
Samo wywołanie i poszczególne jego części najlepiej objaśnić na zapisie składniowym:
var mode = document.compatMode;
gdzie poszczególne człony oznaczają:
- mode - łańcuch znakowy reprezentujący tryb renderowania dokumentu. Dostępne są jedynie dwie wartości:
- "
CSS1Compat
" - dla trybu bez dziwactw i ograniczonego trybu dziwactw. - "
BackCompat
" - dla trybu dziwactw.
- "
- document - dokument będący obiektem kontekstu.
W zależności od podejmowanej akcji muszą zostać wykonane następujące kroki:
Odczyt wartości atrybutu (getting):
Zwróć łańcuch znakowy "
BackCompat
" jeśli trybem w obiekcie kontekstu jest "quirks
", w przeciwnym razie zwróć łańcuch znakowy "CSS1Compat
".
Rozróżnienie między trybem bez dziwactw a ograniczonym trybem dziwactw nie jest dostępne wprost, ale można to ustalić poprzez bezpośrednią analizę deklaracji typu dokumentu (zgodnie z wymaganiami podawanymi przez Mozillę dla tego trybu renderowania).
Tryb renderowania można kontrolować tylko i wyłącznie z wykorzystaniem parsera HTML w trakcie tworzenia dokumentów HTML. Jest on niewygodną spuścizną po starszych specyfikacjach i implementacjach (głównie w przeglądarkach internetowych), które do dnia dzisiejszego wspierają jego różne warianty. W związku z tym nigdy nie należy zapominać o umieszczeniu w dokumentach HTML odpowiedniej deklaracji typu dokumentu (obecnie wystarczy uproszczona wersja <!DOCTYPE html>
), która wymusi zastosowanie trybu bez dziwactw dla tego rodzaju dokumentów (szczegóły).
Prosty przykład:
<script>
function getInfoDoc(desc, whatDoc){
doc.write(desc + "<br>");
doc.write("Interfejs: " + whatDoc + "<br>");
doc.write("compatMode: " + whatDoc.compatMode + "<br><br>");
}
var doc = document; // domyślny dokument tworzony przez parser HTML
getInfoDoc("Parametry dla domyślnego dokumentu tworzonego przez parser HTML (właściwość document):", doc);
try{
var newDoc = new Document(); // nowy dokument
getInfoDoc("Parametry dla new Document():", newDoc);
}
catch(e){
doc.write("Brak obsługi konstruktora new Document() dlatego zrzucony zostanie błąd:" + "<br>");
doc.write(e + "<br>"); // opis zależny od przeglądarki
doc.write(e.constructor + "<br><br>"); // function TypeError() { [native code] }
}
var newDocXML = doc.implementation.createDocument(null, null, null); // nowy dokument XML
getInfoDoc("Parametry dla createDocument(null, null, null):", newDocXML);
var newDocHTML = doc.implementation.createHTMLDocument(""); // nowy dokument HTML
getInfoDoc("Parametry dla createHTMLDocument(''):", newDocHTML);
</script>
Właściwość compatMode
pojawia się dopiero w specyfikacji DOM4.
Składnia Web IDL#
interface Document : Node { readonly attribute DOMString compatMode; };