2012-03-28 31 views
2

我有多個用戶可供下載的URL。下載應該在點擊「贊」或發佈「Tweet」之後觸發。我已經成功地爲兩者設置了回調函數。用Javascript函數啓動下載

我想知道如何使用Javascript,以便同時觸發多個下載。一種解決方案是使用window.location,但這隻會觸發單一下載。我甚至可以做多個window.open,但彈出式窗口攔截器會阻止這種情況。

對於這種情況我還有其他什麼方法嗎?

回答

0

你可以做的是創建該文件的src爲每個下載隱藏的iframe,像:

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

這與多個調用,似乎並沒有在Chrome中工作。 – kapeels 2012-03-28 02:35:23

+0

mmm ...我只用10次調用就可以測試它,它可以工作...使用chrome開發工具檢查,所有請求都在同一時間發送... – Jaime 2012-03-28 02:39:25

+0

Chrome中沒有下載提示,而是獲取登錄控制檯'資源解釋爲文檔,但與MIME類型應用程序/ [zip/pdf/...]'傳輸' – kapeels 2012-03-28 02:45:17

1

你可以,如果您需要在瀏覽器下載文件,而不使用content-disposition: attachment;filename=filename使用此功能頭。

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 
}