Für Entwickler
Sende Downloads von jeder Website an Download Manager Plus, mit einem Link oder mit JavaScript.
Universeller Link
Verlinke auf /add mit der Adresse der Datei. Wenn die Person die Erweiterung hat, wird sie gebeten, den Download zu bestätigen; sonst kann sie sie installieren oder die Datei direkt herunterladen.
<a href="https://download.extension.lat/add?name=manual.pdf&url=https%3A%2F%2Fexample.com%2Ffiles%2Fmanual.pdf" rel="nofollow">
Mit Download Manager Plus herunterladen
</a>| Name | Beschreibung |
|---|---|
| url | Die http(s)-Adresse der Datei. Erforderlich. |
| name | Vorgeschlagener Dateiname. Optional; er wird vor dem Speichern bereinigt. |
Schaltfläche „Zu Download Manager Plus hinzufügen“
Ein Link, der wie eine Schaltfläche aussieht. Er funktioniert ohne JavaScript; mit dem Hilfsskript nutzt er die Brücke, wenn sie verfügbar ist.
<a
class="dmplus-button"
href="https://download.extension.lat/add?name=manual.pdf&url=https%3A%2F%2Fexample.com%2Ffiles%2Fmanual.pdf"
data-dmplus-url="https://example.com/files/manual.pdf"
data-dmplus-name="manual.pdf"
rel="nofollow"
>
Zu Download Manager Plus hinzufügen
</a>
<style>
.dmplus-button {
display: inline-flex;
align-items: center;
gap: 0.5rem;
padding: 0.625rem 1.25rem;
border-radius: 999px;
background: #a3e635;
color: #1a2e05;
font: 600 0.875rem/1 system-ui, sans-serif;
text-decoration: none;
}
.dmplus-button:focus-visible {
outline: 2px solid #1a2e05;
outline-offset: 2px;
}
</style>Hilfsskript
Ein kleines Skript ohne Abhängigkeiten, das window.DownloadManagerPlus bereitstellt. Die TypeScript-Typen stehen in dmplus.d.ts.
<script src="https://download.extension.lat/sdk/dmplus.js" defer></script>
<!-- Optional: Links mit data-dmplus-url nutzen die Brücke. -->
<script src="https://download.extension.lat/sdk/dmplus.js" data-dmplus-auto defer></script>Füge data-dmplus-auto zum script-Tag hinzu, damit Links mit data-dmplus-url die Brücke nutzen. Tu das nicht auf Seiten, die Links anzeigen, die deine Nutzerinnen und Nutzer geschrieben haben: auf einer vertrauenswürdigen Website lädt die Brücke ohne Nachfrage herunter.
// Nutzt die Brücke, wenn sie auf deiner Website verfügbar ist; sonst öffnet er den universellen Link.
const result = await window.DownloadManagerPlus.addDownload({
url: "https://example.com/files/manual.pdf",
name: "manual.pdf",
});
if ("requestId" in result) {
const state = await window.DownloadManagerPlus.bridge.status(result.requestId);
console.log(state.status); // "pending", "downloading", "complete"…
}JavaScript-Brücke
Wenn die Person Websites erlaubt, Downloads zu senden (die Willkommensanleitung bietet das für jede Website an), oder deine Website über das Erweiterungssymbol freigibt, kann deine Seite Downloads anfordern und ihren Status mit window.postMessage prüfen. Die Person bestätigt weiterhin jeden Download, außer sie markiert deine Website (https) als vertrauenswürdig.
| Name | Beschreibung |
|---|---|
| dmplus:add | Fordert einen Download an: url sowie optional fileName und folder. |
| dmplus:status | Prüft den Status eines Downloads, den deine eigene Seite angefordert hat. |
| dmplus:result | Die Antwort der Erweiterung, mit derselben id, die du gesendet hast. |
| dmplus:ready | Die Erweiterung meldet, dass die Brücke auf der Seite aktiv ist. |
| dmplus:ping | Fragt, ob die Brücke aktiv ist; die Erweiterung antwortet mit dmplus:ready. |
// Ohne das Hilfsskript: dasselbe Protokoll mit postMessage.
window.addEventListener("message", (event) => {
if (event.source !== window) return;
if (event.data?.source === "dmplus-extension" && event.data.type === "dmplus:result") {
console.log(event.data.id, event.data.result);
}
});
window.postMessage(
{
id: crypto.randomUUID(),
request: { url: "https://example.com/files/manual.pdf", fileName: "manual.pdf", v: 1 },
source: "dmplus",
type: "dmplus:add",
},
location.origin
);Referenz
Status
| Name | Beschreibung |
|---|---|
| pending | Wartet darauf, dass die Person den Download bestätigt. |
| rejected | Die Person hat abgelehnt oder das Fenster geschlossen. |
| downloading | Wird heruntergeladen. |
| complete | Download abgeschlossen. |
| failed | Der Download konnte nicht abgeschlossen werden. |
Fehlercodes
| Name | Beschreibung |
|---|---|
| invalid-request | Fehlerhafte Nachricht, eine Adresse, die nicht http(s) ist, oder eine Adresse im lokalen Netz. |
| unsupported-version | Deine Seite nutzt eine neuere Protokollversion als die Erweiterung. |
| rate-limited | Mehr als 10 Anfragen pro Minute von deiner Website. |
| too-many-pending | Es warten schon Anfragen auf Bestätigung. |
| not-found | Diese ID gibt es nicht oder wurde nicht von deiner Seite angefordert. |
| internal | Interner Fehler; versuch es noch einmal. |
Grenzen und Datenschutz
Es werden nur http(s)-Adressen angenommen, ohne eigene Header oder Cookies. Jede Website kann höchstens 10 Anfragen pro Minute stellen und erhält nur den Status der Downloads, die sie selbst angefordert hat. Eine öffentliche Website kann keine Dateien aus dem lokalen Netz der Person anfordern.