Dieser Inhalt wurde automatisch aus dem Englischen übersetzt, und kann Fehler enthalten. Erfahre mehr über dieses Experiment.

View in English Always switch to English

SharedWorker: SharedWorker() Konstruktor

Limited availability

This feature is not Baseline because it does not work in some of the most widely-used browsers.

Warnung: Das Skript, das an das url Element übergeben wird, wird ausgeführt. APIs wie diese sind bekannt als Injection-Sinks und stellen potenziell eine Angriffsfläche für Cross-Site Scripting (XSS) Angriffe dar.

Sie können dieses Risiko mindern, indem Sie eine Content Security Policy (CSP) verwenden, die die Orte einschränkt, von denen Skripte geladen werden können, und indem Sie immer TrustedScriptURL Objekte anstelle von Strings zuweisen und Trusted Types durchsetzen. Siehe Sicherheitsüberlegungen im Worker() Konstruktor für weitere Informationen.

Der SharedWorker() Konstruktor erstellt ein SharedWorker Objekt, das das Skript an der angegebenen URL ausführt.

Syntax

js
new SharedWorker(url)
new SharedWorker(url, name)
new SharedWorker(url, options)

Parameter

url

Ein TrustedScriptURL Objekt oder ein String, der die URL des Skripts oder Moduls darstellt, das der Worker ausführen wird. Diese muss mit dem Dokument des Aufrufers gleich-originiert sein, oder eine blob: oder data: URL sein. Die URL wird relativ zur aktuellen Position der HTML-Seite aufgelöst.

name Optional

Ein String, der einen identifizierenden Namen für den SharedWorkerGlobalScope angibt, der den Umfang des Workers darstellt. Dies ist nützlich für das Erstellen neuer Instanzen desselben SharedWorker und für das Debuggen.

options Optional

Ein Objekt, das Options-Eigenschaften enthält, die beim Erstellen der Objektinstanz festgelegt werden können. Verfügbare Eigenschaften sind wie folgt:

type

Ein String, der den Typ des zu erstellenden Workers angibt. Der Wert kann classic oder module sein. Standardmäßig wird classic verwendet.

credentials

Ein String, der festlegt, ob der Browser Anmeldeinformationen sendet, wenn Module in einen Modul-Worker importiert werden. Die zulässigen Werte sind dieselben wie bei einem fetch() Request: omit, same-origin, oder include. Der Standardwert ist same-origin (nur Anmeldeinformationen für gleich-originierte Anfragen einbeziehen).

Dies wird für klassische Worker ignoriert.

name

Ein String, der einen identifizierenden Namen für den SharedWorkerGlobalScope angibt, der den Umfang des Workers darstellt, was hauptsächlich zu Debugging-Zwecken nützlich ist.

sameSiteCookies

Ein String, der angibt, welche SameSite Cookies für den Worker verfügbar sein sollen. Kann einen der folgenden zwei Werte haben:

'all'

SameSite=Strict, SameSite=Lax und SameSite=None Cookies sind alle für den Worker verfügbar. Diese Option wird nur in Erstanbieter-Kontexten unterstützt und ist der Standard in Erstanbieter-Kontexten.

'none'

Nur SameSite=None Cookies sind für den Worker verfügbar. Diese Option wird in Erstanbieter- und Drittanbieter-Kontexten unterstützt und ist der Standard in Drittanbieter-Kontexten.

Ausnahmen

SecurityError DOMException

Wird ausgelöst, wenn das Dokument nicht berechtigt ist, Worker zu starten, z.B. wenn die URL eine ungültige Syntax hat oder die Same-Origin-Policy verletzt wird, oder wenn der sameSiteCookies Wert im gegebenen Kontext nicht unterstützt wird.

NetworkError DOMException

Wird ausgelöst, wenn der MIME-Typ des Worker-Skripts falsch ist. Er sollte immer text/javascript sein (aus historischen Gründen könnten andere JavaScript MIME-Typen akzeptiert werden).

SyntaxError DOMException

Wird ausgelöst, wenn url nicht geparst werden kann.

TypeError

Wird ausgelöst, wenn der url Parameter ein String ist, während Trusted Types durch eine CSP durchgesetzt werden und keine Standardrichtlinie definiert ist.

Beschreibung

Der SharedWorker() Konstruktor erstellt ein SharedWorker Objekt, das das klassische Skript oder Modul an der angegebenen URL ausführt.

Das Skript muss same-origin mit dem zugehörigen Dokument sein, darf jedoch selbst Skripte oder Module importieren, die cross-origin sind (wenn durch CORS und andere Einschränkungen erlaubt). Wenn ein cross-origin Worker erforderlich ist, müssen Benutzer ihn von einem Zwischenarbeiter gleicher Herkunft oder einem Blob laden.

Für weitere Informationen siehe Beschreibung im Worker() Konstruktor.

Beispiele

Der Übersichtlichkeit halber verwenden die folgenden Beispiele keine Trusted Types. In der Produktion sollte Ihr Code immer Trusted Types verwenden, wenn Daten, die von Benutzern stammen, an Injection-Sinks übergeben werden.

Für ein Beispiel siehe Using Trusted Types in den Worker() Konstruktorbeispielen.

Grundlegende Nutzung

Der folgende Code-Snippet zeigt die Erstellung eines SharedWorker Objekts mit dem SharedWorker() Konstruktor und die anschließende Nutzung des Objekts:

js
const myWorker = new SharedWorker("worker.js");

myWorker.port.start();

[first, second].forEach((input) => {
  input.onchange = () => {
    myWorker.port.postMessage([first.value, second.value]);
    console.log("Message posted to worker");
  };
});

myWorker.port.onmessage = (e) => {
  result1.textContent = e.data;
  console.log("Message received from worker");
};

Für ein vollständiges Beispiel siehe unser Einfaches Shared Worker Beispiel (Shared Worker ausführen).

Spezifikationen

Specification
HTML
# dom-sharedworker-dev

Browser-Kompatibilität

Siehe auch