2012-12-10 22 views
5

Sto cercando di scaricare un url scrivendo il codice per l'estensione chrome. Ecco il file MyScript.js:Scarica url chrome extension

chrome.downloads.download(
    {url: 'http://www.iana.org/_img/iana-logo-pageheader.png', 
    saveAs: true 
    }, 
    function(res){alert(res);}); 

ed ecco la mia manifest.json

{ 
    "name": "My extension", 
    "version": "1.0", 
    "manifest_version":2, 
    "background_page": "background.html", 
    "browser_action": { 
    "name": "Manipulate DOM", 
    "icons": ["icon.png"], 
    "default_icon": "icon.png" 
    }, 
    "permissions": ["downloads", 
    "tabs", "http://*/*","https://*/*" 
    ], 
    "content_scripts": [ 
    { 
     "matches": [ "http://*/*", "https://*/*"], 
     "js": ["jquery.js","d3.v2.js","myscript.js"], 
     "run_at": "document_end" 
    } 
    ] 
} 

ma la console sta mostrando l'errore "Impossibile chiamare il metodo 'download' di non definito". Per favore aiutatemi.

risposta

8

La documentazione per chrome.downloads afferma chiaramente che il "API è ancora in fase di sviluppo. E 'disponibile solo per gli utenti di Chrome sul dev early release channel." (sottolineatura mia, attualmente su Chrome 23).

Per utilizzare l'API, è necessario ottenere un dev o canarino build di Chrome (vedi this page per link per il download).

Un altro modo per risolvere il problema è quello di non utilizzare l'API chrome.downloads. Sto usando il seguente metodo per creare download, e funziona come un fascino (funziona ovunque: contenuto della pagina script/sfondo/popup/altro):

var a = document.createElement('a'); 
a.href = 'http://www.iana.org/_img/iana-logo-pageheader.png'; 
a.download = 'iana-logo-pageheader.png'; // Filename 
a.click();        // Trigger download 

a.click() provoca Chrome per seguire il link.
L'attributo download causa il download della destinazione da parte di Chrome e suggerisce il valore dell'attributo come nome file nella finestra di dialogo Salva con nome.

Questa funzione non è limitata alle estensioni di Chrome, è anche possibile utilizzarla in una normale pagina Web. Dai un'occhiata a questa demo: http://jsfiddle.net/dEeHF/.

+0

Grazie .. Ha davvero aiutato..Ma cosa fare nel caso se voglio scaricare i miei file in una cartella specifica piuttosto che nella cartella Download predefinita. – skjindal93

+0

@ skjindal93 Non è possibile utilizzare uno dei due metodi. Questo non dovrebbe essere un problema: le cose più importanti sono disponibili: 1. Il file stesso. 2. Il nome del file. Spetta all'utente se lo posizionano nella cartella Download predefinita o altrove. –

+0

@RobW scusa per rianimare un thread precedente, ma ho appena provato ad usare il tuo codice, e funziona la prima volta che lo invoco, ma poi non funzionerà più fino a quando non riavvio l'estensione. Puoi pensare perché questo potrebbe accadere? – Garrett

Problemi correlati