2012-12-10 23 views
5

chrome uzantısı için kod yazarak bir url indirmeye çalışıyorum. İşte MyScript.js dosyasıdır: BuradaDownload url chrome uzantisi

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

ve benim 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" 
    } 
    ] 
} 

ama konsol hatası "tanımsız yöntemi 'indir' arayamaz" gösteriyor. Lütfen bana yardım edin.

cevap

8

chrome.downloads belgeleri açıkça "API geliştirme aşamasındadır. Bu dev early release channel Chrome kullanıcıları için kullanılabilir olduğunu." Belirtmektedir (şu anda Chrome 23'te).

API kullanmak için, (indirme bağlantıları için this page bakınız) Chrome'un dev veya kanarya yapı almak gerekir.

Sorunu çözmenin başka bir yolu, chrome.downloads API'sini kullanmamaktır. (Her yerde çalışır: İçerik komut/arka plan sayfası/pop-up/ne olursa olsun): Ben indirmeleri oluşturmak için aşağıdaki yöntemi kullanıyorum, ve bir cazibe gibi çalışır

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() Krom linki takip etmesine sebep olur.
download özniteliği, Chrome'un hedefi indirmesine ve Farklı Kaydet iletişim kutusunda özniteliğin değerini dosya adı olarak önermesine neden olur.

Bu özellik Chrome uzantıları ile sınırlı olmayıp, normal bir web sayfasında da kullanabilirsiniz. Bu demoya bir göz atın: http://jsfiddle.net/dEeHF/.

+0

Teşekkürler. Gerçekten yardımcı oldu.Ama dosyalarımı varsayılan İndirilenler klasöründen ziyade belirli bir klasöre indirmek istersem bu durumda ne yapmalıyım? – skjindal93

+0

@ skjindal93 Bu, her iki yöntem kullanılarak mümkün değildir. Ancak bu bir problem olmamalı: En önemli şeyler: 1. Dosyanın kendisi. 2. Dosya adı. Kullanıcının varsayılan İndirilenler klasörüne mi yoksa başka bir yere mi yerleştirildiğine bağlıdır. –

+0

@RobW eski bir ileti dizisini canlandırdığım için özür dilerim, ancak kodunuzu kullanmayı denedim ve ilk kez çalıştırdığımda çalışıyor, ancak uzantıyı yeniden başlatana kadar tekrar çalışmayacak. Bunun neden olabileceğini düşünüyor musunuz? – Garrett