Dla deweloperów
Wysyłaj pobrania do Download Manager Plus z dowolnej witryny, linkiem albo przez JavaScript.
Uniwersalny link
Linkuj do /add z adresem pliku. Jeśli użytkownik ma rozszerzenie, zostaje poproszony o potwierdzenie pobrania; jeśli nie, może je zainstalować albo pobrać plik bezpośrednio.
<a href="https://download.extension.lat/add?name=manual.pdf&url=https%3A%2F%2Fexample.com%2Ffiles%2Fmanual.pdf" rel="nofollow">
Pobierz przez Download Manager Plus
</a>| Nazwa | Opis |
|---|---|
| url | Adres http(s) pliku. Wymagany. |
| name | Sugerowana nazwa pliku. Opcjonalna; jest oczyszczana przed zapisem. |
Przycisk „Dodaj do Download Manager Plus”
Link wystylizowany jako przycisk. Działa bez JavaScript; ze skryptem pomocniczym używa mostka, gdy ten jest dostępny.
<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"
>
Dodaj do Download Manager Plus
</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>Skrypt pomocniczy
Mały skrypt bez zależności, który udostępnia window.DownloadManagerPlus. Typy TypeScript są w dmplus.d.ts.
<script src="https://download.extension.lat/sdk/dmplus.js" defer></script>
<!-- Opcjonalnie: linki z data-dmplus-url używają mostka. -->
<script src="https://download.extension.lat/sdk/dmplus.js" data-dmplus-auto defer></script>Dodaj data-dmplus-auto do znacznika script, aby linki z data-dmplus-url używały mostka. Nie rób tego na stronach, które pokazują linki napisane przez użytkowników: na zaufanej witrynie mostek pobiera bez pytania.
// Używa mostka, jeśli jest dostępny na twojej witrynie; w przeciwnym razie otwiera uniwersalny 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"…
}Mostek JavaScript
Jeśli użytkownik pozwala witrynom wysyłać pobrania (przewodnik powitalny proponuje to dla każdej witryny) albo zezwala twojej witrynie z ikony rozszerzenia, twoja strona może prosić o pobrania i sprawdzać ich stan przez window.postMessage. Użytkownik nadal potwierdza każde pobranie, chyba że oznaczy twoją witrynę (https) jako zaufaną.
| Nazwa | Opis |
|---|---|
| dmplus:add | Prosi o pobranie: url oraz opcjonalne fileName i folder. |
| dmplus:status | Sprawdza stan pobrania, o które poprosiła twoja własna strona. |
| dmplus:result | Odpowiedź rozszerzenia, z tym samym id, które wysłano. |
| dmplus:ready | Rozszerzenie ogłasza, że mostek jest aktywny na stronie. |
| dmplus:ping | Pyta, czy mostek jest aktywny; rozszerzenie odpowiada dmplus:ready. |
// Bez skryptu pomocniczego: ten sam protokół z 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
);Dokumentacja
Stany
| Nazwa | Opis |
|---|---|
| pending | Czeka, aż użytkownik potwierdzi pobranie. |
| rejected | Użytkownik odmówił albo zamknął okno. |
| downloading | Pobieranie. |
| complete | Pobieranie ukończone. |
| failed | Nie udało się ukończyć pobierania. |
Kody błędów
| Nazwa | Opis |
|---|---|
| invalid-request | Zniekształcony komunikat, adres inny niż http(s) albo adres sieci lokalnej. |
| unsupported-version | Twoja strona używa nowszej wersji protokołu niż rozszerzenie. |
| rate-limited | Więcej niż 10 żądań na minutę z twojej witryny. |
| too-many-pending | Żądania już czekają na potwierdzenie. |
| not-found | Ten identyfikator nie istnieje albo nie został zamówiony przez twoją stronę. |
| internal | Błąd wewnętrzny; spróbuj ponownie. |
Limity i prywatność
Przyjmowane są tylko adresy http(s), bez własnych nagłówków i plików cookie. Każda witryna może wysłać do 10 żądań na minutę i dostaje tylko stan pobrań, o które sama poprosiła. Publiczna witryna nie może prosić o pliki z sieci lokalnej użytkownika.