Signatur
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
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);
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.');
}
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.embedsoderdocument.pluginsnutzen. - Die Eigenschaft ist schreibgeschützt. Eine Zuweisung wird im nicht-strikten Modus stillschweigend ignoriert und löst im strikten Modus einen
TypeErroraus.