2012-03-28 3 views
2

다운로드 할 URL이 여러 개 있습니다. 다운로드는 "좋아요"를 누르거나 "Tweet"을 게시 한 후 트리거되어야합니다. 성공적으로 두 가지에 대한 콜백 함수를 설정했습니다.자바 스크립트 기능으로 다운로드 시작

여러 다운로드가 동시에 트리거되도록 자바를 어떻게 사용하는지 알고 싶습니다. 한 가지 해결책은 window.location을 사용하는 것이지만, 이는 단 한 번의 다운로드를 유발합니다. 심지어 복수 window.open을 할 수 있지만 팝업 차단기가이를 차단합니다.

이 경우 어떤 대안이 있습니까? 당신이 할 수있는 일

답변

0

각 다운로드 파일의 SRC와 숨겨진 iframe이를 만드는 것입니다, 무엇인가 : 당신이 content-disposition: attachment;filename=filename를 사용하지 않고 브라우저 다운로드 파일을해야하는 경우

function download(url){ 
    var iframe = document.createElement("iframe"); 
    iframe.src = url; 
    iframe.style.display = "none"; 
    document.body.appendChild(iframe); 
} 
+0

여러 번 호출하여 Chrome에서 작동하지 않는 것 같습니다. – kapeels

+0

mmm ... 10 개의 호출로 for를 테스트했고 작동합니다 ... Chrome dev 도구로 검사하면 모든 요청이 동시에 전송됩니다 ... – Jaime

+0

Chrome에 다운로드 프롬프트가 표시되지 않고 대신이 메시지가 표시됩니다. '문서로 해석되었지만 MIME 유형으로 전송 된 리소스/[zip/pdf/...]' – kapeels

1

이 기능을 사용할 수 있습니다 머리글.

function aDownload(url, name) { 
    // Original code from https://github.com/eligrey/FileSaver.js 
    // Rewrited to work without blobs 
    // Will return true if worked 
    var click, save_link, event; 
    save_link = document.createElementNS("http://www.w3.org/1999/xhtml", "a") 
    if(!("download" in save_link)) return false; // a[download] not supported on this browser 
    save_link.href = url; 
    save_link.download = name; 
    event = document.createEvent("MouseEvents"); 
    event.initMouseEvent(
     "click", true, false, window, 0, 0, 0, 0, 0 
     , false, false, false, false, 0, null 
    ); 
    return save_link.dispatchEvent(event); // false if event was cancelled 
} 
관련 문제