Start · Sprachen · JavaScript · Referenz · Document.applets

Document.applets

Eigenschaft

Die schreibgeschützte Eigenschaft <code>document.applets</code> gibt heute immer eine leere <code>HTMLCollection</code> zurück. Sie ist veraltet und nur aus Kompatibilitätsgründen vorhanden.

seit JavaScript Veraltet – in aktuellen Browsern immer leer (HTML deprecated seit ja Kategorie: webapi

Signatur

get Document.applets

Beschreibung

Früher lieferte document.applets eine Liste aller Java-Applets im Dokument, also aller <applet>-Elemente (teilweise auch <object>-Elemente mit Java-Inhalt). Seit die Browser das Java-Plugin (NPAPI) nicht mehr unterstützen und das <applet>-Element aus HTML entfernt wurde, schreibt der HTML Living Standard vor, dass die Eigenschaft immer eine leere HTMLCollection zurückgibt.

Die Eigenschaft gibt es nur noch, damit alter Code nicht mit einem TypeError abbricht, wenn er zum Beispiel document.applets.length abfragt. Einen praktischen Nutzen hat sie in neuem Code nicht mehr.

Wer in einer Altanwendung prüfen will, ob noch <applet>- oder <object>-Elemente im Markup stehen, sollte stattdessen document.querySelectorAll() oder document.getElementsByTagName() verwenden. Eingebettete Inhalte lassen sich über document.embeds bzw. document.plugins finden.

Rückgabewert

Typ
HTMLCollection
Beschreibung
Eine live-HTMLCollection, die in aktuellen Browsern immer leer ist (length === 0).

Beispiele

Rückgabewert in einem modernen Browser prüfen

const applets = document.applets;

console.log(applets instanceof HTMLCollection);
console.log(applets.length);
true 0

Altcode absichern und <applet>-Tags trotzdem finden

// document.applets bleibt leer, auch wenn <applet> im Markup steht
const legacyCount = document.applets?.length ?? 0;

// Zuverlässige Alternative: direkt nach den Elementen suchen
const appletTags = document.querySelectorAll('applet, object[type^="application/x-java"]');

console.log(`document.applets: ${legacyCount}`);
console.log(`Gefundene Legacy-Elemente: ${appletTags.length}`);

if (appletTags.length > 0) {
  console.warn('Seite enthält Java-Applets, die kein Browser mehr ausführt.');
}
document.applets: 0 Gefundene Legacy-Elemente: 0

Migration: Applets durch Hinweistext ersetzen

// Auf alten Intranet-Seiten verbliebene <applet>-Elemente ersetzen
const replaceApplets = () => {
  document.querySelectorAll('applet').forEach((el) => {
    const hint = document.createElement('p');
    hint.textContent = 'Dieser Inhalt (Java-Applet) wird nicht mehr unterstützt.';
    el.replaceWith(hint);
  });
};

document.addEventListener('DOMContentLoaded', replaceApplets);

// Wichtig · Fallstricke

  • Veraltet: Nicht in neuem Code verwenden. Die Eigenschaft liefert in allen aktuellen Browsern (Chrome, Edge, Firefox, Safari) immer eine leere Sammlung, auch wenn <applet>-Tags im Markup stehen.
  • Browser, die vor der Anpassung an den Standard erschienen sind, konnten tatsächlich Applet-Elemente zurückgeben. Sich auf dieses Verhalten zu verlassen, führt heute zu falschen Ergebnissen.
  • Zur Erkennung eingebetteter Inhalte besser document.querySelectorAll(), document.embeds oder document.plugins nutzen.
  • Die Eigenschaft ist schreibgeschützt. Eine Zuweisung wird im nicht-strikten Modus stillschweigend ignoriert und löst im strikten Modus einen TypeError aus.