2012-12-10 7 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을에 크롬의 사용자 만 사용할 수 이다. "고 말한다 (강조 23, 현재 크롬 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 

a.click()가 크롬이 링크를 따라됩니다.
download 속성을 사용하면 Chrome에서 대상을 다운로드하고 다른 이름으로 저장 대화 상자에서 속성의 값을 파일 이름으로 제안합니다.

이 기능은 Chrome 확장 프로그램에만 국한되지 않으며 일반 웹 페이지에서도 사용할 수 있습니다. 이 데모를보십시오 : http://jsfiddle.net/dEeHF/.

+0

감사합니다. 정말 도움이되었습니다. 그러나 기본 다운로드 폴더가 아닌 특정 폴더에 파일을 다운로드하려는 경우 어떻게해야합니까? – skjindal93

+0

@ skjindal93 두 방법 중 하나를 사용하는 것은 불가능합니다. 그것은 문제가되지 않습니다 : 가장 중요한 것들이 있습니다 : 1. 파일 자체. 2. 파일 이름. 사용자가 기본 다운로드 폴더 또는 다른 위치에 둘 것인지 여부는 사용자의 몫입니다. –

+0

@RobW 오래된 스레드를 되살려 죄송합니다. 코드를 사용해 보았지만 처음 호출 할 때 작동하지만 확장을 다시 시작할 때까지 작동하지 않습니다. 왜 이런 일이 일어날 지 생각해 볼 수 있습니까? – Garrett