Lewati ke konten

Untuk pengembang

Kirim unduhan ke Download Manager Plus dari situs web mana pun, dengan tautan atau dengan JavaScript.

Tombol “Tambahkan ke Download Manager Plus”

Tautan yang ditata sebagai tombol. Tautan ini berfungsi tanpa JavaScript; dengan skrip pembantu, tautan memakai jembatan saat jembatan tersedia.

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"
>
  Tambahkan ke 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>

Skrip pembantu

Skrip kecil tanpa dependensi yang mengekspos window.DownloadManagerPlus. Tipe TypeScript ada di dmplus.d.ts.

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

<!-- Opsional: tautan dengan data-dmplus-url memakai jembatan. -->
<script src="https://download.extension.lat/sdk/dmplus.js" data-dmplus-auto defer></script>

Tambahkan data-dmplus-auto pada tag skrip agar tautan dengan data-dmplus-url memakai jembatan. Jangan lakukan ini pada halaman yang menampilkan tautan yang ditulis pengguna Anda: di situs tepercaya, jembatan mengunduh tanpa bertanya.

JavaScript
// Memakai jembatan jika tersedia di situs Anda; jika tidak, membuka tautan universal.
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"…
}

Jembatan JavaScript

Jika pengguna mengizinkan situs web mengirim unduhan (panduan selamat datang menawarkannya untuk setiap situs) atau mengizinkan situs Anda dari ikon ekstensi, halaman Anda dapat meminta unduhan dan memeriksa statusnya dengan window.postMessage. Pengguna tetap mengonfirmasi setiap unduhan, kecuali mereka menandai situs Anda (https) sebagai tepercaya.

Pesan
NamaDeskripsi
dmplus:addMeminta unduhan: url, ditambah fileName dan folder yang opsional.
dmplus:statusMemeriksa status unduhan yang diminta halaman Anda sendiri.
dmplus:resultBalasan ekstensi, dengan id yang sama yang Anda kirim.
dmplus:readyEkstensi mengumumkan bahwa jembatan aktif di halaman.
dmplus:pingMenanyakan apakah jembatan aktif; ekstensi membalas dengan dmplus:ready.
JavaScript
// Tanpa skrip pembantu: protokol yang sama dengan 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
);

Referensi

Status

Status
NamaDeskripsi
pendingMenunggu pengguna mengonfirmasi unduhan.
rejectedPengguna menolaknya atau menutup jendela.
downloadingMengunduh.
completeUnduhan selesai.
failedUnduhan tidak dapat diselesaikan.

Kode kesalahan

Kode kesalahan
NamaDeskripsi
invalid-requestPesan yang rusak, alamat yang bukan http(s), atau alamat jaringan lokal.
unsupported-versionHalaman Anda memakai versi protokol yang lebih baru daripada ekstensi.
rate-limitedLebih dari 10 permintaan per menit dari situs Anda.
too-many-pendingPermintaan sudah menunggu konfirmasi.
not-foundID itu tidak ada atau tidak diminta oleh halaman Anda.
internalKesalahan internal; coba lagi.

Batasan dan privasi

Hanya alamat http(s) yang diterima, tanpa header atau cookie khusus. Setiap situs dapat membuat hingga 10 permintaan per menit dan hanya menerima status unduhan yang dimintanya. Situs publik tidak dapat meminta file dari jaringan lokal pengguna.