Naar de inhoud

Voor ontwikkelaars

Stuur downloads naar Download Manager Plus vanaf elke website, met een link of met JavaScript.

Knop “Toevoegen aan Download Manager Plus”

Een link die eruitziet als een knop. Hij werkt zonder JavaScript; met het hulpscript gebruikt hij de brug wanneer die beschikbaar is.

HTML
<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"
>
  Toevoegen aan 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>

Hulpscript

Een klein script zonder afhankelijkheden dat window.DownloadManagerPlus beschikbaar maakt. De TypeScript-typen staan in dmplus.d.ts.

HTML
<script src="https://download.extension.lat/sdk/dmplus.js" defer></script>

<!-- Optioneel: links met data-dmplus-url gebruiken de brug. -->
<script src="https://download.extension.lat/sdk/dmplus.js" data-dmplus-auto defer></script>

Voeg data-dmplus-auto toe aan de scripttag zodat links met data-dmplus-url de brug gebruiken. Doe dit niet op pagina's die links tonen die door je gebruikers zijn geschreven: op een vertrouwde site downloadt de brug zonder te vragen.

JavaScript
// Gebruikt de brug als die op je site beschikbaar is; anders opent hij de universele 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-brug

Als de gebruiker websites downloads laat sturen (de welkomstgids biedt dit aan voor elke site) of je site toestaat via het extensiepictogram, kan je pagina downloads aanvragen en hun status controleren met window.postMessage. De gebruiker bevestigt elke download nog steeds, tenzij die je site (https) als vertrouwd markeert.

Berichten
NaamBeschrijving
dmplus:addVraagt een download aan: url, plus optionele fileName en folder.
dmplus:statusControleert de status van een download die je eigen pagina heeft aangevraagd.
dmplus:resultHet antwoord van de extensie, met dezelfde id die je stuurde.
dmplus:readyDe extensie meldt dat de brug actief is op de pagina.
dmplus:pingVraagt of de brug actief is; de extensie antwoordt met dmplus:ready.
JavaScript
// Zonder het hulpscript: hetzelfde protocol met 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
);

Naslag

Statussen

Statussen
NaamBeschrijving
pendingWacht tot de gebruiker de download bevestigt.
rejectedDe gebruiker heeft geweigerd of het venster gesloten.
downloadingDownloaden.
completeDownload voltooid.
failedDe download kon niet worden voltooid.

Foutcodes

Foutcodes
NaamBeschrijving
invalid-requestMisvormd bericht, een adres dat geen http(s) is of een adres in het lokale netwerk.
unsupported-versionJe pagina gebruikt een nieuwere protocolversie dan de extensie.
rate-limitedMeer dan 10 verzoeken per minuut vanaf je site.
too-many-pendingEr wachten al verzoeken op bevestiging.
not-foundDie id bestaat niet of is niet door je pagina aangevraagd.
internalInterne fout; probeer het opnieuw.

Limieten en privacy

Alleen http(s)-adressen worden geaccepteerd, zonder aangepaste headers of cookies. Elke site kan tot 10 verzoeken per minuut doen en ontvangt alleen de status van de downloads die zij heeft aangevraagd. Een openbare site kan geen bestanden uit het lokale netwerk van de gebruiker aanvragen.