Cho nhà phát triển
Gửi lượt tải tới Download Manager Plus từ trang web bất kỳ, bằng liên kết hoặc bằng JavaScript.
Liên kết chung
Liên kết tới /add với địa chỉ của tệp. Nếu người dùng có tiện ích, họ được yêu cầu xác nhận lượt tải; nếu không, họ có thể cài tiện ích hoặc tải tệp trực tiếp.
<a href="https://download.extension.lat/add?name=manual.pdf&url=https%3A%2F%2Fexample.com%2Ffiles%2Fmanual.pdf" rel="nofollow">
Tải bằng Download Manager Plus
</a>| Tên | Mô tả |
|---|---|
| url | Địa chỉ http(s) của tệp. Bắt buộc. |
| name | Tên tệp gợi ý. Không bắt buộc; tên được làm sạch trước khi lưu. |
Nút “Thêm vào Download Manager Plus”
Một liên kết được trình bày như nút. Liên kết hoạt động không cần JavaScript; với tập lệnh trợ giúp, liên kết dùng cầu nối khi cầu nối có sẵn.
Xem trước
Thêm vào 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"
>
Thêm vào 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>Tập lệnh trợ giúp
Một tập lệnh nhỏ, không phụ thuộc, phơi bày window.DownloadManagerPlus. Kiểu TypeScript nằm ở dmplus.d.ts.
<script src="https://download.extension.lat/sdk/dmplus.js" defer></script>
<!-- Không bắt buộc: liên kết có data-dmplus-url dùng cầu nối. -->
<script src="https://download.extension.lat/sdk/dmplus.js" data-dmplus-auto defer></script>Thêm data-dmplus-auto vào thẻ tập lệnh để liên kết có data-dmplus-url dùng cầu nối. Đừng làm vậy trên trang hiện liên kết do người dùng của bạn viết: trên trang đáng tin, cầu nối tải mà không hỏi.
// Dùng cầu nối nếu trang của bạn có sẵn; nếu không, mở liên kết chung.
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"…
}Cầu nối JavaScript
Nếu người dùng cho phép trang web gửi lượt tải (hướng dẫn chào mừng đề nghị điều này cho mọi trang) hoặc cho phép trang của bạn từ biểu tượng tiện ích, trang bạn có thể yêu cầu lượt tải và kiểm tra trạng thái bằng window.postMessage. Người dùng vẫn xác nhận từng lượt tải, trừ khi họ đánh dấu trang của bạn (https) là đáng tin.
| Tên | Mô tả |
|---|---|
| dmplus:add | Yêu cầu một lượt tải: url, cùng fileName và folder không bắt buộc. |
| dmplus:status | Kiểm tra trạng thái của lượt tải do chính trang bạn yêu cầu. |
| dmplus:result | Câu trả lời của tiện ích, với cùng id bạn đã gửi. |
| dmplus:ready | Tiện ích báo rằng cầu nối đang hoạt động trên trang. |
| dmplus:ping | Hỏi cầu nối có đang hoạt động không; tiện ích trả lời bằng dmplus:ready. |
// Không có tập lệnh trợ giúp: cùng giao thức với 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
);Tham chiếu
Trạng thái
| Tên | Mô tả |
|---|---|
| pending | Đang chờ người dùng xác nhận lượt tải. |
| rejected | Người dùng từ chối hoặc đóng cửa sổ. |
| downloading | Đang tải. |
| complete | Tải xong. |
| failed | Không hoàn tất được lượt tải. |
Mã lỗi
| Tên | Mô tả |
|---|---|
| invalid-request | Thông báo sai định dạng, địa chỉ không phải http(s) hoặc địa chỉ mạng cục bộ. |
| unsupported-version | Trang của bạn dùng phiên bản giao thức mới hơn tiện ích. |
| rate-limited | Hơn 10 yêu cầu mỗi phút từ trang của bạn. |
| too-many-pending | Đã có yêu cầu đang chờ xác nhận. |
| not-found | ID đó không tồn tại hoặc không do trang của bạn yêu cầu. |
| internal | Lỗi nội bộ; hãy thử lại. |
Giới hạn và quyền riêng tư
Chỉ địa chỉ http(s) được chấp nhận, không có tiêu đề hoặc cookie tùy chỉnh. Mỗi trang có thể gửi tối đa 10 yêu cầu mỗi phút và chỉ nhận trạng thái của các lượt tải do trang đó yêu cầu. Trang công khai không thể yêu cầu tệp từ mạng cục bộ của người dùng.