Розробникам
Надсилайте завантаження в Download Manager Plus з будь-якого сайту, посиланням або через JavaScript.
Універсальне посилання
Посилання на /add з адресою файлу. Якщо в користувача є розширення, його просять підтвердити завантаження; якщо немає, він може встановити його або завантажити файл безпосередньо.
<a href="https://download.extension.lat/add?name=manual.pdf&url=https%3A%2F%2Fexample.com%2Ffiles%2Fmanual.pdf" rel="nofollow">
Завантажити з Download Manager Plus
</a>| Ім’я | Опис |
|---|---|
| url | Адреса файлу http(s). Обов’язково. |
| name | Пропоноване ім’я файлу. Необов’язково; очищується перед збереженням. |
Кнопка «Додати в Download Manager Plus»
Посилання, оформлене як кнопка. Працює без JavaScript; із допоміжним скриптом використовує міст, коли він доступний.
Попередній перегляд
Додати в Download Manager Plus<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>
<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>Допоміжний скрипт
Невеликий скрипт без залежностей, який відкриває window.DownloadManagerPlus. Типи TypeScript містяться в dmplus.d.ts.
<script src="https://download.extension.lat/sdk/dmplus.js" defer></script>
<!-- Необов’язково: посилання з data-dmplus-url використовують міст. -->
<script src="https://download.extension.lat/sdk/dmplus.js" data-dmplus-auto defer></script>Додайте data-dmplus-auto до тегу script, щоб посилання з data-dmplus-url використовували міст. Не робіть цього на сторінках, де показано посилання, написані вашими користувачами: на довіреному сайті міст завантажує без запитання.
// Використовує міст, якщо він доступний на вашому сайті; інакше відкриває універсальне посилання.
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
Якщо користувач дозволяє сайтам надсилати йому завантаження (вітання пропонує це для всіх сайтів) або дозволяє ваш сайт зі значка розширення, сторінка може запитувати завантаження і перевіряти їхній статус через window.postMessage. Користувач і далі підтверджує кожне завантаження, якщо не позначить ваш сайт (https) як довірений.
| Ім’я | Опис |
|---|---|
| dmplus:add | Запитує завантаження: url, а також необов’язкові fileName і folder. |
| dmplus:status | Перевіряє статус завантаження, яке запитала ваша сторінка. |
| dmplus:result | Відповідь розширення з тим самим id, який ви надіслали. |
| dmplus:ready | Розширення повідомляє, що міст на сторінці активний. |
| dmplus:ping | Питає, чи активний міст; розширення відповідає dmplus:ready. |
// Без допоміжного скрипта: той самий протокол через 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
);Довідник
Статуси
| Ім’я | Опис |
|---|---|
| pending | Очікування, поки користувач підтвердить завантаження. |
| rejected | Користувач відхилив його або закрив вікно. |
| downloading | Завантаження триває. |
| complete | Завантаження завершено. |
| failed | Завантаження не вдалося завершити. |
Коди помилок
| Ім’я | Опис |
|---|---|
| invalid-request | Неправильно сформоване повідомлення, адреса не http(s) або адреса локальної мережі. |
| unsupported-version | Ваша сторінка використовує новішу версію протоколу, ніж розширення. |
| rate-limited | Більше 10 запитів на хвилину з вашого сайту. |
| too-many-pending | Запити вже чекають на підтвердження. |
| not-found | Такого ID немає, або його запитала не ваша сторінка. |
| internal | Внутрішня помилка; спробуйте ще раз. |
Обмеження і конфіденційність
Приймаються лише адреси http(s), без власних заголовків і cookie. Кожен сайт може зробити до 10 запитів на хвилину і отримує лише статус завантажень, які запитав сам. Публічний сайт не може запитувати файли з локальної мережі користувача.