Pour les développeurs
Envoyez des téléchargements à Download Manager Plus depuis n’importe quel site, avec un lien ou avec JavaScript.
Lien universel
Liez vers /add avec l’adresse du fichier. Si la personne a l’extension, on lui demande de confirmer le téléchargement ; sinon, elle peut l’installer ou télécharger le fichier directement.
<a href="https://download.extension.lat/add?name=manual.pdf&url=https%3A%2F%2Fexample.com%2Ffiles%2Fmanual.pdf" rel="nofollow">
Télécharger avec Download Manager Plus
</a>| Nom | Description |
|---|---|
| url | L’adresse http(s) du fichier. Obligatoire. |
| name | Nom de fichier suggéré. Facultatif ; il est nettoyé avant l’enregistrement. |
Bouton « Ajouter à Download Manager Plus »
Un lien présenté comme un bouton. Il fonctionne sans JavaScript ; avec le script d’aide, il utilise le pont quand il est disponible.
<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"
>
Ajouter à 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 d’aide
Un petit script sans dépendance qui expose window.DownloadManagerPlus. Les types TypeScript se trouvent dans dmplus.d.ts.
<script src="https://download.extension.lat/sdk/dmplus.js" defer></script>
<!-- Facultatif : les liens avec data-dmplus-url utilisent le pont. -->
<script src="https://download.extension.lat/sdk/dmplus.js" data-dmplus-auto defer></script>Ajoutez data-dmplus-auto à la balise du script pour que les liens avec data-dmplus-url utilisent le pont. Ne le faites pas sur des pages qui affichent des liens écrits par vos utilisateurs : sur un site de confiance, le pont télécharge sans demander.
// Utilise le pont s’il est disponible sur votre site ; sinon, ouvre le lien universel.
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"…
}Pont JavaScript
Si la personne autorise les sites à lui envoyer des téléchargements (le guide de bienvenue le propose pour tous les sites) ou autorise votre site depuis l’icône de l’extension, votre page peut demander des téléchargements et consulter leur statut avec window.postMessage. La personne confirme encore chaque téléchargement, sauf si elle marque votre site (https) comme site de confiance.
| Nom | Description |
|---|---|
| dmplus:add | Demande un téléchargement : url, plus fileName et folder facultatifs. |
| dmplus:status | Vérifie le statut d’un téléchargement demandé par votre propre page. |
| dmplus:result | La réponse de l’extension, avec le même id que vous avez envoyé. |
| dmplus:ready | L’extension annonce que le pont est actif sur la page. |
| dmplus:ping | Demande si le pont est actif ; l’extension répond avec dmplus:ready. |
// Sans le script d’aide : le même protocole avec 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
);Référence
Statuts
| Nom | Description |
|---|---|
| pending | En attente de la confirmation de la personne. |
| rejected | La personne a refusé ou a fermé la fenêtre. |
| downloading | Téléchargement en cours. |
| complete | Téléchargement terminé. |
| failed | Le téléchargement n’a pas pu aboutir. |
Codes d’erreur
| Nom | Description |
|---|---|
| invalid-request | Message malformé, une adresse qui n’est pas en http(s) ou une adresse de réseau local. |
| unsupported-version | Votre page utilise une version du protocole plus récente que l’extension. |
| rate-limited | Plus de 10 demandes par minute depuis votre site. |
| too-many-pending | Des demandes attendent déjà une confirmation. |
| not-found | Cet identifiant n’existe pas ou n’a pas été demandé par votre page. |
| internal | Erreur interne ; réessayez. |
Limites et confidentialité
Seules les adresses http(s) sont acceptées, sans en-têtes personnalisés ni cookies. Chaque site peut faire jusqu’à 10 demandes par minute et ne reçoit que le statut des téléchargements qu’il a demandés. Un site public ne peut pas demander des fichiers du réseau local de la personne.