5

Tôi đang cố gắng sử dụng Downloads.jsm lib của Firefox (nó mới trong Firefox 23) trong trình bổ sung jetpack.Firefox Addon Downloads.jsm

var {Cu} = require("chrome"); //works fine 
const {Downloads} = Cu.import("resource://gre/modules/Downloads.jsm"); //works fine 

Nhưng thực hiện một trong các chức năng này không có tác dụng:

download = Downloads.createDownload({source: "http://cdn.sstatic.net", target: "/tmp/kaki.html"}); //download is an object but has no function "start" 
Downloads.simpleDownload("http://cdn.sstatic.net","/tmp/kaki.html"); 

Tài liệu: https://developer.mozilla.org/en-US/docs/Mozilla/JavaScript_code_modules/Downloads.jsm https://developer.mozilla.org/en-US/docs/Mozilla/JavaScript_code_modules/Downloads.jsm/Download

Bạn có bất cứ ý tưởng, làm thế nào để sử dụng các chức năng này? Tôi chưa tìm thấy bất kỳ ví dụ nào trên web

Trả lời

6

Chức năng API trả về promise, không phải đối tượng Tải xuống thực tế.

Nói tóm lại, sau đây nên làm việc:

const {Downloads} = Cu.import("resource://gre/modules/Downloads.jsm", {}); 
var downloadPromise = Downloads.createDownload({source: "http://cdn.sstatic.net", target: "/tmp/kaki.html"}) 
downloadPromise.then(function success(d) { 
    d.start(); 
}); 

Đọc trên promises, và để làm việc với họ rất nhiều niềm vui hơn, cũng Task.jsm

API đã thay đổi khá nhiều thời gian gần đây; những gì được ghi lại là Aurora-25 hoặc API mới hơn. API "cũ" được ghi lại trong số source.

Ví dụ hoàn chỉnh hơn với hỗ trợ Firefox < 25 có sẵn trong số gist này.

+0

Cảm ơn câu trả lời của bạn! Bây giờ tôi gần gũi hơn với giải pháp. Tôi phát hiện ra rằng tham số 'saver:" copy "' phải được thiết lập. Trong trường hợp này hàm thành công được gọi và 'd' thực sự là đối tượng' Tải xuống'. Nhưng 'd.start()' vẫn không có hiệu lực. – balping

+0

Mã tôi đã cung cấp cho tác phẩm cho tôi nguyên văn trong bảng điều khiển có đặc quyền chrome (trên OSX Nightly anyway), tức là /tmp/kaki.html được tạo với nội dung chính xác. Nếu bạn muốn được trợ giúp thêm, hãy tinh chỉnh câu hỏi của bạn với nhiều chi tiết hơn và xây dựng một chút. – nmaier

+0

Bạn có thể chia sẻ ví dụ của mình tại [Add-on builder] (https://builder.addons.mozilla.org) không? Tôi đã sao chép chính xác mã của bạn và mã không hoạt động. Tôi đang chạy Ubuntu 12.04 và tôi thực sự không biết có gì sai. Tôi sẽ rất biết ơn – balping

Các vấn đề liên quan