Start · Sprachen · JavaScript · Referenz · Window.external

Window.external

Eigenschaft

Gibt ein <code>External</code>-Objekt zurück, das ursprünglich Methoden zum Hinzufügen externer Suchanbieter enthielt und heute nur noch leere Platzhalter-Methoden bietet.

seit JavaScript Veraltet (deprecated); in allen Browsern nur noch deprecated seit ja Kategorie: webapi

Signatur

get Window.external

Beschreibung

Die schreibgeschützte Eigenschaft window.external liefert eine Instanz der External-Schnittstelle. Früher boten Browser (vor allem der Internet Explorer und ältere Firefox-Versionen) darüber Methoden wie AddSearchProvider() und IsSearchProviderInstalled() an. Damit konnte eine Webseite dem Browser eine OpenSearch-Beschreibung als neue Suchmaschine vorschlagen.

Im WHATWG-HTML-Standard sind beide Methoden heute nur noch als wirkungslose Platzhalter definiert: AddSearchProvider() tut nichts und gibt undefined zurück, IsSearchProviderInstalled() tut ebenfalls nichts und gibt undefined zurück. Das Objekt bleibt nur erhalten, damit alter Code, der diese Methoden aufruft, keine Fehler wirft.

In neuem Code gibt es keinen sinnvollen Anwendungsfall für window.external. Soll eine Suchmaschine angeboten werden, verwendet man stattdessen ein <link rel="search" type="application/opensearchdescription+xml" href="…"> im Dokumentkopf. Die Browser erkennen den Anbieter dann selbst und bieten ihn in ihrer Oberfläche an.

Rückgabewert

Typ
External
Beschreibung
Ein External-Objekt mit den Platzhalter-Methoden AddSearchProvider() und IsSearchProviderInstalled(), die beide nichts bewirken.

Beispiele

Vorhandensein und Typ prüfen

// Zeigt, dass das Objekt noch da ist, aber nichts bewirkt
console.log(typeof window.external);
console.log(Object.prototype.toString.call(window.external));
console.log(typeof window.external.AddSearchProvider);
object [object External] function

Alter Aufruf ist heute wirkungslos

// Legacy-Code: früher öffnete das einen Dialog zum Hinzufügen einer Suchmaschine
const result = window.external.AddSearchProvider('https://example.com/opensearch.xml');
console.log(result); // kein Dialog, kein Fehler

const installed = window.external.IsSearchProviderInstalled('https://example.com');
console.log(installed);
undefined undefined

Moderner Ersatz: OpenSearch per <link> einbinden

// Statt window.external.AddSearchProvider() den Anbieter deklarativ bekannt machen
const link = document.createElement('link');
link.rel = 'search';
link.type = 'application/opensearchdescription+xml';
link.title = 'Beispiel-Suche';
link.href = '/opensearch.xml';
document.head.append(link);

console.log(document.querySelector('link[rel="search"]').href);
https://example.com/opensearch.xml (je nach aktueller Origin)

// Wichtig · Fallstricke

  • Veraltet: window.external ist deprecated. Die Methoden gibt es aus Kompatibilitätsgründen noch, sie haben aber keine Wirkung mehr. Verwende sie nicht in neuem Code.
  • Keine Funktionserkennung: Aus 'AddSearchProvider' in window.external kann man nicht schließen, dass die Funktion auch tatsächlich arbeitet. Die Methode ist zwar vorhanden, tut aber nichts.
  • Internet Explorer: Im IE diente window.external außerdem als Brücke zu eingebetteten Host-Anwendungen (z. B. WebBrowser-Control mit ObjectForScripting). Solcher Code läuft in modernen Browsern nicht. In WebView2 gibt es dafür window.chrome.webview.
  • Kompatibilität: Chrome, Firefox, Safari und Edge stellen das Objekt bereit. Die Methoden sind dort überall leere Platzhalter.