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
new SharedWorker(url)
new SharedWorker(url, name)
new SharedWorker(url, options)
Parameter
url-
Ein
TrustedScriptURLObjekt 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 eineblob:oderdata:URL sein. Die URL wird relativ zur aktuellen Position der HTML-Seite aufgelöst. nameOptional-
Ein String, der einen identifizierenden Namen für den
SharedWorkerGlobalScopeangibt, der den Umfang des Workers darstellt. Dies ist nützlich für das Erstellen neuer Instanzen desselbenSharedWorkerund für das Debuggen. optionsOptional-
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
classicodermodulesein. Standardmäßig wirdclassicverwendet. 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, oderinclude. Der Standardwert istsame-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
SharedWorkerGlobalScopeangibt, der den Umfang des Workers darstellt, was hauptsächlich zu Debugging-Zwecken nützlich ist. -
Ein String, der angibt, welche
SameSiteCookies für den Worker verfügbar sein sollen. Kann einen der folgenden zwei Werte haben:- 'all'
-
SameSite=Strict,SameSite=LaxundSameSite=NoneCookies 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=NoneCookies 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
SecurityErrorDOMException-
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
sameSiteCookiesWert im gegebenen Kontext nicht unterstützt wird. NetworkErrorDOMException-
Wird ausgelöst, wenn der MIME-Typ des Worker-Skripts falsch ist. Er sollte immer
text/javascriptsein (aus historischen Gründen könnten andere JavaScript MIME-Typen akzeptiert werden). SyntaxErrorDOMException-
Wird ausgelöst, wenn
urlnicht geparst werden kann. TypeError-
Wird ausgelöst, wenn der
urlParameter 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:
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
- Das
SharedWorkerInterface, zu dem es gehört.