2012-12-10 24 views
5

クロム拡張用のコードを書いてURLをダウンロードしようとしています。ここでmyscript.jsファイルは次のとおりです。URLのクロム拡張子をダウンロードする

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

、ここでは私の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" 
    } 
    ] 
} 

ですが、コンソールにはエラーが「未定義の 『ダウンロード』メソッドを呼び出すことはできません」と表示されます。 私を助けてください。

答えて

8

chrome.downloadsのドキュメントには、はっきりと「APIはまだ開発中である。それは、DEV early release channel上のクロムユーザーのためにのみ利用可能である。」と述べています(強調しているのは現在、Chrome 23です)。

APIを使用するには、(ダウンロードリンクのためのthis pageを参照)クロームのDEVまたはカナリアビルドを取得する必要があります。

問題を解決する別の方法は、chrome.downloads APIを使用しないことです。 (:コンテンツスクリプト/背景ページ/ポップアップ/何でも、それはどこでも動作します):私はダウンロードを作成するには、次の方法を使用してきた、そしてそれは魔法のように動作

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 

リンクをたどるためにChromeを引き起こしa.click()
属性がdownloadの場合、Chromeはターゲットをダウンロードし、[名前を付けて保存]ダイアログで属性の値をファイル名として提案します。

この機能はChrome拡張機能に限定されず、通常のウェブページでも使用できます。このデモをご覧ください:http://jsfiddle.net/dEeHF/

+0

ありがとうございます。本当に助かりました。しかし、デフォルトのダウンロードフォルダではなく、特定のフォルダにファイルをダウンロードしたい場合、どうすればよいですか。 – skjindal93

+0

@ skjindal93いずれの方法でも使用できません。それは問題ではありません:最も重要なものが利用可能です:1.ファイル自体。 2.ファイル名。デフォルトのダウンロードフォルダに置くかどうかは、ユーザーに任されます。 –

+0

@RobW古いスレッドを復活させて申し訳ありませんが、私はあなたのコードを使用しようとしましたが、呼び出すのは初めてでしたが、拡張機能を再起動するまでは動作しません。なぜこれが起こっているのか考えてみませんか? – Garrett

関連する問題