Загрузите двоичный файл без запуска onbeforeunload

4 ответа

Лучший способ сделать это - это построить iframe и запустить загрузку оттуда.

Я тестировал в Chrome, IE6 + и Firefox, и этот подход, похоже, работает во всех них.

Пример кода:

function DownloadFile(filePath) {
 var downloadIframe = $('<iframe>', 
 {
 id : 'downloadIframe' 
 }).appendTo('body');
 downloadIframe.attr('src',filePath');
}
</code>

Это будет работать только для однократной загрузки (так как мы жестко закодировали идентификатор), если вы запускаете несколько загрузок, то я предлагаю вам повторно использовать iframe, сохранив его в более доступной переменной.


Добавьте атрибут download к тегу a, который, по-видимому, предотвращает запуск **************:

От этот ответ.


Я знаю, что этот ответ очень поздний, но есть простое решение. Создайте iframe динамически и установите для него "src" его URL-адрес для загрузки через JavaScript. Это начнет загрузку без запуска события выгрузки (я думаю).


Я бы предположил, что использование целевого атрибута в ссылке может сделать трюк.

<a href="http://www.example.com/somefile.zip" target="_blank">download</a>

Не будет проверять (если только не использовать тип frameset doctype), но он может сработать. Он создаст новую вкладку или окно, а затем загрузит файл (если заголовок http говорит, что он должен), но он может оставить новые вкладки/окна открыты или могут закрыть их после сохранения...

С другой стороны, я думаю, что с обработчиком **************, который вы иногда не хотите вызывать подозрительные звуки, зачем вам это нужно?

licensed under cc by-sa 3.0 with attribution.