2013-03-23 2 views
2

настоящее время я использую следующий 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-браузере.

Любые идеи?

Спасибо, что прочитал меня.

+0

Работает ли это с firexox, opera, dolphin, ...? – greenapps

+0

@greenapps Извините, я должен был упомянуть об этом. Он терпит неудачу только в Android-браузере и Dolphin. – syam

+0

Вы пытались обновить страницу и каждый раз генерировать новый контент, она обновляется? ETech

ответ

0

Try с помощью якоря и имитации щелчка без использования мишени = пустого

Я говорю это потому, что у меня был похожим скачать, состоящие из фрейма и простой ссылки в качестве запасного варианта. Iframe работал над всем, кроме андроида, но простая ссылка была успешно загружена, не покидая страницу.

+0

Извините за долгую задержку, похоже, что я как-то пропустил уведомление. Как я уже сказал в своем вопросе, я не могу использовать обычную ссылку, потому что, несмотря на то, что браузер * появляется *, чтобы оставаться на одной странице, соединение с длинным опросом Comet закрывается, и мое приложение ломается. – syam

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