2013-01-22 28 views
2

我有一個擴展名,它將一些文件保存到下載文件夾中。下面的代碼是隻是爲了測試谷歌瀏覽器 - 錨定標記的下載屬性

//This lies in the background page of my extension 
function fileTest(name) { 
    var a = document.createElement('a'); 
    a.href = 'data:text/plain;base64,SGVsbG8gV29ybGQh'; //Hello World! 
    a.download = name + '.txt'; 
    a.onclick = function (e) {console.log('[TEST] ' + name);return true;}; 
    a.click(); 
} 
window.onload = function() { 
    fileTest('test1'); 
    fileTest('test12'); 
    fileTest('test123'); 
} 

只有第一個文件「test1.txt的」被保存到磁盤,雖然控制檯的輸出顯示,有3次點擊

[測試] TEST1

[測試] TEST12

[測試] test123

這是瀏覽器的故意限制嗎?或者代碼有問題?

+0

我懷疑你不能下載單個文件?包括''test1.txt'''? – Sudarshan

+0

我沒有跟進你的意思,第一個文件是**下載到磁盤,因爲它應該。 –

回答

3

當我在一個普通的瀏覽會話中運行your code,我走出通知,說

此網站試圖下載多個文件,幻燈片(在窗口的頂部)。你想允許這個嗎?

所以,是的,這是瀏覽器的安全限制,限制非用戶啓動的下載。您可能看不到通知,因爲該操作正在由您的背景頁面執行。

的限制似乎是每個用戶的動作和下載爲證明你的代碼this variant

window.onclick = function() { 
    fileTest('test1'); 
} 

這將允許無限量下載,但只有每點擊事件一個下載。

+0

謝謝,這真是令人困惑。 –