İçeriğe atla

Geliştiriciler için

Herhangi bir web sitesinden, bir bağlantıyla veya JavaScript ile Download Manager Plus'a indirme gönder.

“Download Manager Plus'a ekle” düğmesi

Düğme görünümlü bir bağlantı. JavaScript olmadan çalışır; yardımcı betikle, köprü varsa onu kullanır.

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"
>
  Download Manager Plus'a ekle
</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>

Yardımcı betik

window.DownloadManagerPlus sunan, bağımlılığı olmayan küçük bir betik. TypeScript türleri şurada: dmplus.d.ts.

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

<!-- İsteğe bağlı: data-dmplus-url içeren bağlantılar köprüyü kullanır. -->
<script src="https://download.extension.lat/sdk/dmplus.js" data-dmplus-auto defer></script>

data-dmplus-url içeren bağlantıların köprüyü kullanması için betik etiketine data-dmplus-auto ekle. Bunu, kullanıcılarının yazdığı bağlantıları gösteren sayfalarda yapma: güvenilen bir sitede köprü sormadan indirir.

JavaScript
// Sitende varsa köprüyü kullanır; yoksa evrensel bağlantıyı açar.
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 köprüsü

Kullanıcı web sitelerinin kendisine indirme göndermesine izin verirse (karşılama rehberi bunu her site için önerir) veya siteni uzantı simgesinden onaylarsa, sayfan window.postMessage ile indirme isteyebilir ve durumlarını kontrol edebilir. Kullanıcı siteni (https) güvenilir işaretlemedikçe her indirmeyi yine onaylar.

İletiler
AdAçıklama
dmplus:addBir indirme ister: url ve isteğe bağlı fileName ile folder.
dmplus:statusKendi sayfanın istediği bir indirmenin durumunu kontrol eder.
dmplus:resultUzantının yanıtı, gönderdiğin id ile aynıdır.
dmplus:readyUzantı, köprünün sayfada etkin olduğunu bildirir.
dmplus:pingKöprünün etkin olup olmadığını sorar; uzantı dmplus:ready ile yanıtlar.
JavaScript
// Yardımcı betik olmadan: postMessage ile aynı protokol.
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
);

Başvuru

Durumlar

Durumlar
AdAçıklama
pendingKullanıcının indirmeyi onaylaması bekleniyor.
rejectedKullanıcı reddetti veya pencereyi kapattı.
downloadingİndiriliyor.
completeİndirme bitti.
failedİndirme tamamlanamadı.

Hata kodları

Hata kodları
AdAçıklama
invalid-requestBozuk ileti, http(s) olmayan bir adres veya yerel ağ adresi.
unsupported-versionSayfan, uzantınınkinden daha yeni bir protokol sürümü kullanıyor.
rate-limitedSitenden dakikada 10'dan fazla istek.
too-many-pendingOnay bekleyen istekler zaten var.
not-foundBu kimlik yok veya sayfan istemedi.
internalİç hata; yeniden dene.

Sınırlar ve gizlilik

Yalnızca http(s) adresleri kabul edilir; özel üstbilgi veya çerez yoktur. Her site dakikada en fazla 10 istek yapabilir ve yalnızca kendi istediği indirmelerin durumunu alır. Herkese açık bir site, kullanıcının yerel ağından dosya isteyemez.