Signatur
Beschreibung
document.contentType gibt den MIME-Typ des aktuellen Dokuments als String zurück. Der Wert stammt normalerweise aus dem HTTP-Header Content-Type, allerdings ohne Parameter wie charset. Bei Dokumenten, die per Skript erzeugt wurden (z. B. mit DOMParser oder document.implementation.createDocument()), richtet er sich nach der Art der Erzeugung.
Nützlich ist die Eigenschaft, wenn ein Skript in verschiedenen Kontexten laufen kann: in einem normalen HTML-Dokument, einem eigenständigen SVG-Dokument, einem XHTML-Dokument (application/xhtml+xml) oder einer im Browser angezeigten XML-Datei. Je nach Typ gelten andere Parser-Regeln. In XML-Dokumenten zum Beispiel wird bei Element- und Attributnamen die Groß-/Kleinschreibung unterschieden, und document.write() ist dort nicht erlaubt.
Die Eigenschaft ist schreibgeschützt. Eine Zuweisung wird ignoriert, im Strict Mode wirft sie einen TypeError, weil nur ein Getter existiert.
Rückgabewert
"text/html", "application/xhtml+xml", "image/svg+xml", "application/xml" oder "text/plain".Beispiele
MIME-Typ des aktuellen Dokuments ausgeben
// In einer normal ausgelieferten HTML-Seite
console.log(document.contentType);
Code je nach Dokumenttyp unterschiedlich ausführen
const isXmlDocument = () => {
const type = document.contentType;
return type === 'application/xhtml+xml' ||
type === 'image/svg+xml' ||
type.endsWith('/xml') ||
type.endsWith('+xml');
};
const insertMarkup = (html) => {
if (isXmlDocument()) {
// In XML-Dokumenten ist document.write() verboten, außerdem muss der Namespace stimmen
const p = document.createElementNS('http://www.w3.org/1999/xhtml', 'p');
p.textContent = html;
document.documentElement.append(p);
} else {
document.body.insertAdjacentHTML('beforeend', html);
}
};
insertMarkup('<p>Hallo Welt</p>');
Typ von per DOMParser erzeugten Dokumenten
const parser = new DOMParser();
const htmlDoc = parser.parseFromString('<p>Hi</p>', 'text/html');
const svgDoc = parser.parseFromString(
'<svg xmlns="http://www.w3.org/2000/svg"></svg>',
'image/svg+xml'
);
const xmlDoc = document.implementation.createDocument(null, 'root');
console.log(htmlDoc.contentType);
console.log(svgDoc.contentType);
console.log(xmlDoc.contentType);
// Wichtig · Fallstricke
- Kein Zeichensatz: Parameter wie
; charset=utf-8sind nicht enthalten. Die Zeichenkodierung liefertdocument.characterSet. - Schreibgeschützt: Zuweisungen haben keine Wirkung. Im Strict Mode führen sie zu einem
TypeError. - Wert kommt vom Server: Sendet der Server einen falschen
Content-Type, spiegeltcontentTypegenau diesen wider. Eine HTML-Datei, die alstext/plainausgeliefert wird, erscheint dann als reiner Text, und die Eigenschaft meldet"text/plain". - Für eine Prüfung, ob HTML- oder XML-Regeln gelten, ist
contentTypegenauer alsdocument.doctypeoderdocument.compatMode. - Kompatibilität: In allen aktuellen Browsern verfügbar. Der Internet Explorer unterstützt die Eigenschaft nicht, dort gab es nur das nicht standardisierte
document.mimeTypemit anderen Werten.