6

Chrome 拡張機能のコードを記述して URL をダウンロードしようとしています。myscript.js ファイルは次のとおりです。

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

しかし、コンソールには「undefined のメソッド 'download' を呼び出せません」というエラーが表示されます。私を助けてください。

4

1 に答える 1

9

のドキュメントにchrome.downloadsは、「APIはまだ開発中です。開発初期リリースチャネルのChromeユーザーのみが利用できます」と明記されています。(強調鉱山、現在Chrome 23にあります)。

APIを使用するには、Chromeの開発者またはカナリアビルド入手する必要があります(ダウンロードリンクについては、このページを参照してください)。

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

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()Chromeにリンクをたどらせます。
このdownload属性により、Chromeはターゲットをダウンロードし、[名前を付けて保存]ダイアログでファイル名として属性の値を提案します。

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

于 2012-12-10T22:01:36.203 に答える