У меня возникла проблема с событием onLoad iframe в Google Chrome. Я создал iframe и установил значение для своего атрибута "src", чтобы получить файл с сервера. Пока сервер обрабатывает, отображается окно ожидания, пока клиент не получит возвращенный файл. Я попытался использовать событие onLoad iframe для обнаружения, когда клиент получает файл, чтобы отключить это окно ожидания, но в Google Chrome этот обработчик событий не работает.
С Firefox, когда клиент получает файл, всплывающее окно "Сохранить в" будет отображаться автоматически, а событие "load" будет запущено, но этого не происходит в Chrome.
Не могли бы вы рассказать мне, как справиться с этой проблемой? Большое вам спасибо!
Какое событие JS запускается, когда Chrome получает файл загрузки?
Ответ 1
Я столкнулся с этой точной проблемой. Оказывается, Chrome не запускает абсолютно никаких событий в iframe при загрузке файла.
Поскольку нет событий, которые нужно искать, и вы возвращаете файл (как это было указано в любом встроенном контенте), обходным путем я был вынужден проверить содержимое iframe через несколько секунд, если он пуст, тогда предположим, ошибок не было, и результаты были обработаны правильно. Если он содержит данные (мой сервер вернет JSON, если есть какие-либо ошибки), тогда обработайте данные об ошибках соответствующим образом.
Ответ 2
Я столкнулся с этой проблемой, и в итоге я использовал этот плагин: http://johnculviner.com/jquery-file-download-plugin-for-ajax-like-feature-rich-file-downloads/
Он основан на том же понятии, который описывает morgan, он прост в использовании, и он отлично работает.
Ответ 3
Способ, которым я столкнулся с этой проблемой, - установить cookie (done = 0), когда на странице, на которой будет загружаться iframe, я использую javascript для удаления iframe на страницу, и я изменяю значение этого файла cookie когда источник iframe script работает успешно (done = 1).
Затем я использовал простой вызов ajax с параметром settimeout, чтобы вернуть значение cookie, когда значение равно 1 Я могу запустить событие onload (это работает для всех других браузеров).