Geliştiriciler için
Herhangi bir web sitesinden, bir bağlantıyla veya JavaScript ile Download Manager Plus'a indirme gönder.
Evrensel bağlantı
/add adresine dosyanın adresiyle bağlan. Kullanıcıda uzantı varsa indirmeyi onaylaması istenir; yoksa kurabilir veya dosyayı doğrudan indirebilir.
<a href="https://download.extension.lat/add?name=manual.pdf&url=https%3A%2F%2Fexample.com%2Ffiles%2Fmanual.pdf" rel="nofollow">
Download Manager Plus ile indir
</a>| Ad | Açıklama |
|---|---|
| url | Dosyanın http(s) adresi. Zorunlu. |
| name | Önerilen dosya adı. İsteğe bağlı; kaydetmeden önce temizlenir. |
“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.
Önizleme
Download Manager Plus'a ekle<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.
<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.
// 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.
| Ad | Açıklama |
|---|---|
| dmplus:add | Bir indirme ister: url ve isteğe bağlı fileName ile folder. |
| dmplus:status | Kendi sayfanın istediği bir indirmenin durumunu kontrol eder. |
| dmplus:result | Uzantının yanıtı, gönderdiğin id ile aynıdır. |
| dmplus:ready | Uzantı, köprünün sayfada etkin olduğunu bildirir. |
| dmplus:ping | Köprünün etkin olup olmadığını sorar; uzantı dmplus:ready ile yanıtlar. |
// 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
| Ad | Açıklama |
|---|---|
| pending | Kullanıcının indirmeyi onaylaması bekleniyor. |
| rejected | Kullanıcı reddetti veya pencereyi kapattı. |
| downloading | İndiriliyor. |
| complete | İndirme bitti. |
| failed | İndirme tamamlanamadı. |
Hata kodları
| Ad | Açıklama |
|---|---|
| invalid-request | Bozuk ileti, http(s) olmayan bir adres veya yerel ağ adresi. |
| unsupported-version | Sayfan, uzantınınkinden daha yeni bir protokol sürümü kullanıyor. |
| rate-limited | Sitenden dakikada 10'dan fazla istek. |
| too-many-pending | Onay bekleyen istekler zaten var. |
| not-found | Bu 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.