Baseline Widely available
Blob (oder Objekt) URLs, URLs mit dem Präfix blob:
-Schema, ermöglichen die Integration von Blob
s und MediaSource
s mit anderen APIs, die nur für die Verwendung mit URLs entwickelt wurden, wie das <img>
-Element. Blob-URLs können auch verwendet werden, um zu navigieren sowie Downloads von lokal generierten Daten auszulösen. Sie sind als opake Kennungen konzipiert (das heiÃt, Sie sollten sie nicht manuell schreiben) und sollten mit den Funktionen URL.createObjectURL()
und URL.revokeObjectURL()
verwaltet werden.
Blob-URLs sind ähnlich wie Data-URLs, da sie beide die Darstellung von im Speicher befindlichen Ressourcen als URLs ermöglichen; der Unterschied besteht darin, dass Data-URLs Ressourcen in sich selbst einbetten und erhebliche GröÃenbeschränkungen haben, während Blob-URLs ein unterstützendes Blob
oder MediaSource
erfordern und gröÃere Ressourcen darstellen können.
blob:
Das Schema der URL.
<origin>
Der Ursprung des Erstellers dieser URL. Wenn der Ursprung des Erstellers opak ist, dann ist dieser Teil implementierungsdefiniert.
<uuid>
Ein UUID.
Jedes Mal, wenn Sie createObjectURL()
aufrufen, wird eine neue Objekt-URL erstellt, auch wenn Sie bereits eine für dasselbe Objekt erstellt haben. Jede davon muss freigegeben werden, indem Sie URL.revokeObjectURL()
aufrufen, wenn Sie sie nicht mehr benötigen. Solange eine Objekt-URL aktiv ist, kann das zugrunde liegende Objekt nicht gesammelt werden, was möglicherweise zu Speicherlecks führt.
Browser geben Objekt-URLs automatisch frei, wenn das Dokument entladen wird. Für eine optimale Leistung und Speichernutzung sollten Sie sie jedoch explizit entladen, wenn es sichere Zeiten gibt.
Vermeiden Sie jedoch, die Objekt-URL zu früh freizugeben. Ein häufiges Anti-Pattern ist das folgende:
const url = URL.createObjectURL(blob);
img.src = url;
img.addEventListener("load", () => {
URL.revokeObjectURL(url);
});
document.body.appendChild(img);
Das sofortige Widerrufen der Blob-URL, nachdem das Bild gerendert wurde, würde das Bild für Benutzerinteraktionen unbenutzbar machen (wie das Rechtsklicken zum Speichern des Bildes oder das Ãffnen in einem neuen Tab). Bei langlebigen Anwendungen sollten Sie Objekt-URLs nur widerrufen, wenn die Ressource dem Benutzer nicht mehr zugänglich ist (wie wenn das Bild aus dem DOM entfernt wird).
SpeicherpartitionierungDer Zugriff auf Ressourcen über Blob-URLs unterliegt denselben Einschränkungen wie alle anderen Speichermethoden, das heiÃt State Partitioning. Blob-URLs haben einen zugehörigen Ersteller-Ursprung (der in der URL selbst gespeichert ist) und können nur aus Umgebungen abgerufen werden, in denen der Speicherschlüssel mit dem der Erstellerumgebung übereinstimmt. Blob-URL-Navigationen unterliegen dieser Einschränkung nicht, obwohl Browser möglicherweise DatenschutzmaÃnahmen wie noopener
für Cross-Site-Navigationen zu einer Blob-URL durchsetzen.
In älteren Versionen der Media Source-Spezifikation erforderte das Anhängen eines Streams an ein <video>
-Element das Erstellen einer Objekt-URL für den MediaStream
. Dies ist nicht mehr notwendig, und Browser entfernen die Unterstützung dafür.
Warnung: Wenn Ihr Code noch auf createObjectURL()
angewiesen ist, um Streams an Medienelemente anzuhängen, müssen Sie Ihren Code aktualisieren, um srcObject
direkt auf den MediaStream
zu setzen.
blob:https://example.org/40a5fb5a-d56d-4a33-b4e2-0acf6a8e5f64
Erstellen von Blob-URLs
In diesem Beispiel erstellen wir zuerst ein Blob
aus einem <canvas>
, erzeugen eine Blob-URL dafür und fügen die URL schlieÃlich einem <img>
-Element hinzu.
const canvas = document.querySelector("canvas");
canvas.toBlob((blob) => {
const img = document.createElement("img");
img.src = URL.createObjectURL(blob);
document.body.appendChild(img);
});
Spezifikationen Browser-Kompatibilität Siehe auch
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4