настоящее время я использую следующий JS код для запуска загрузки файла, не покидая страницу Я на:Загрузить файл в скрытом iframe: эквивалент Android в контексте Comet?
var iframe = document.createElement('iframe');
iframe.style.display = 'none';
document.body.appendChild(iframe);
iframe.src = "/somefile.zip";
Он хорошо работает почти везде я проверил, кроме как на складе Android-браузер и Дельфин, где загрузка не начинается вообще. Пока все хорошо, после некоторых исследований этот скрытый трюк iframe, как известно, не работает в браузере Android.
Но я попробовал несколько других методов, чтобы вызвать загрузку на Android браузера, в том числе window.open()
(не надежен, потому что блокировки всплывающих окон включена по умолчанию), или <a target="_blank">
с моделируемой click()
(что с точки зрения блокировщик всплывающих окон составляет window.open()
и блокируется), или document.location = ...
, который загружает файл, но ломает мое приложение.
Проблема с последним document.location = ...
заключается в том, что это приложение Comet (сервер-толчок/длительный опрос), поэтому я действительно не могу покинуть страницу, в которой я сейчас (и «оставить») включает в себя изменение document.location
даже для файл, , даже если , очевидно, браузер остается на текущей странице), в противном случае длительное соединение для голосования прекращается, и обновления останавливаются, приложение ломается. Это, очевидно, также применяется при нажатии на обычные ссылки, либо вручную, либо имитируется.
Так что, чтобы не нарушать мое приложение, мне действительно нужно вызвать файл для загрузки без, оставляя страницу Я нахожусь. К сожалению, я не нашел жизнеспособного решения, которое также работает в Android-браузере.
Любые идеи?
Спасибо, что прочитал меня.
Работает ли это с firexox, opera, dolphin, ...? – greenapps
@greenapps Извините, я должен был упомянуть об этом. Он терпит неудачу только в Android-браузере и Dolphin. – syam
Вы пытались обновить страницу и каждый раз генерировать новый контент, она обновляется? – ETech