2014-09-18 3 views
1

Я использую скрытый iframe на странице HTML для загрузки. И я хотел бы знать, когда это будет сделано. Я много искал в Интернете, и все говорят, что я должен использовать обработчик события iframe onload, но он не работает для меня в Chrome!Обнаружение загрузки iframe в Chrome при загрузке файлов

Я не уверен, где, но я где-то читал, что это потому, что я загружаю файлы с помощью iframe вместо HTML-документов. И я должен признать, что это характерно для Chrome, и он отлично работает в FireFox.

Я также проверил readstate и onreadystatechange без успеха.

Я создал скрипку, чтобы продемонстрировать эту проблему:

function download(url) 
 
{ 
 
    var iframe = document.createElement("iframe"); 
 
    iframe.src = url; 
 
    iframe.onload = function() { 
 
     console.log('Download completed.'); 
 
    }; 
 
    document.body.appendChild(iframe); 
 
}
<button onclick="download('http://www.colorado.edu/conflict/peace/download/peace.zip');">Download</button>

ответ

0

function downloadURL(url) { 
 
    var hiddenIFrameID = 'hiddenDownloader', 
 
     iframe = document.getElementById(hiddenIFrameID); 
 
    if (iframe === null) { 
 
     iframe = document.createElement('iframe'); 
 
     iframe.id = hiddenIFrameID; 
 
     iframe.style.display = 'none'; 
 
     iframe.onload = function() { 
 
      alert('Download completed.'); 
 
     }; 
 
     document.body.appendChild(iframe); 
 
    } 
 
    iframe.src = url; 
 
}
<button onclick="downloadURL('http://www.colorado.edu/conflict/peace/download/peace.zip');">Download</button>

+2

Спасибо, было бы неплохо, чтобы указать на то, что проблема полагается в порядок кода и что 'iframe.src = url;' должен быть выполнен в конце. – Mehran

+1

Это, похоже, больше не работает, по крайней мере, в Firefox. Событие никогда не срабатывает. –

+0

[здесь] (http://stackoverflow.com/questions/16689273), [и здесь] (http://stackoverflow.com/questions/4548984), [последний] (http://stackoverflow.com/questions/9249680) – AvrilAlejandro

Смежные вопросы