Per gli sviluppatori
Invia download a Download Manager Plus da qualsiasi sito, con un link o con JavaScript.
Link universale
Collega a /add con l'indirizzo del file. Se la persona ha l'estensione, le viene chiesto di confermare il download; altrimenti può installarla o scaricare il file direttamente.
<a href="https://download.extension.lat/add?name=manual.pdf&url=https%3A%2F%2Fexample.com%2Ffiles%2Fmanual.pdf" rel="nofollow">
Scarica con Download Manager Plus
</a>| Nome | Descrizione |
|---|---|
| url | L'indirizzo http(s) del file. Obbligatorio. |
| name | Nome file suggerito. Facoltativo; viene ripulito prima del salvataggio. |
Pulsante «Aggiungi a Download Manager Plus»
Un link con l'aspetto di un pulsante. Funziona senza JavaScript; con lo script di supporto usa il ponte quando è disponibile.
Anteprima
Aggiungi a Download Manager Plus<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"
>
Aggiungi a 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>Script di supporto
Un piccolo script senza dipendenze che espone window.DownloadManagerPlus. I tipi TypeScript sono in dmplus.d.ts.
<script src="https://download.extension.lat/sdk/dmplus.js" defer></script>
<!-- Facoltativo: i link con data-dmplus-url usano il ponte. -->
<script src="https://download.extension.lat/sdk/dmplus.js" data-dmplus-auto defer></script>Aggiungi data-dmplus-auto al tag script così i link con data-dmplus-url usano il ponte. Non farlo nelle pagine che mostrano link scritti dalle persone che usano il tuo sito: su un sito attendibile il ponte scarica senza chiedere.
// Usa il ponte se è disponibile sul tuo sito; altrimenti apre il link universale.
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"…
}Ponte JavaScript
Se la persona consente ai siti di inviarle download (la guida di benvenuto lo propone per ogni sito) o autorizza il tuo sito dall'icona dell'estensione, la tua pagina può richiedere download e controllarne lo stato con window.postMessage. La persona conferma comunque ogni download, a meno che non segni il tuo sito (https) come attendibile.
| Nome | Descrizione |
|---|---|
| dmplus:add | Richiede un download: url, più fileName e folder facoltativi. |
| dmplus:status | Controlla lo stato di un download richiesto dalla tua pagina. |
| dmplus:result | La risposta dell'estensione, con lo stesso id che hai inviato. |
| dmplus:ready | L'estensione annuncia che il ponte è attivo nella pagina. |
| dmplus:ping | Chiede se il ponte è attivo; l'estensione risponde con dmplus:ready. |
// Senza lo script di supporto: lo stesso protocollo con 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
);Riferimento
Stati
| Nome | Descrizione |
|---|---|
| pending | In attesa che la persona confermi il download. |
| rejected | La persona ha rifiutato oppure ha chiuso la finestra. |
| downloading | Download in corso. |
| complete | Download terminato. |
| failed | Non è stato possibile completare il download. |
Codici di errore
| Nome | Descrizione |
|---|---|
| invalid-request | Messaggio malformato, un indirizzo che non è http(s) o un indirizzo della rete locale. |
| unsupported-version | La tua pagina usa una versione del protocollo più recente di quella dell'estensione. |
| rate-limited | Più di 10 richieste al minuto dal tuo sito. |
| too-many-pending | Ci sono già richieste in attesa di conferma. |
| not-found | Quell'ID non esiste o non è stato richiesto dalla tua pagina. |
| internal | Errore interno; riprova. |
Limiti e privacy
Sono accettati solo indirizzi http(s), senza intestazioni personalizzate né cookie. Ogni sito può fare fino a 10 richieste al minuto e riceve solo lo stato dei download che ha richiesto lui. Un sito pubblico non può richiedere file dalla rete locale della persona.