![]() |
Модераторы: Sardar, Aliance |
![]() ![]() ![]() |
|
PyccHeBa |
|
|||
Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 6.10.2007 Репутация: нет Всего: нет |
Нужно сделать, чтобы появилось сообщение, пока идет загрузка файла (до 40 сек). Как это сделать? Событие onClick на ссылке может вызвать это сообщение, но как его убрать, когда файл загрузился?
Упрощенно <a href='download.php?parametrs'>download</a> ------------------------------------------------------ download.php <?php ..... ..... header('Content-type: application/xls'); header('Content-Disposition: attachment; filename='file.xls'); readfile('file.xls'); ?> |
|||
|
||||
Ghirik |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 919 Регистрация: 26.3.2007 Репутация: 13 Всего: 20 |
А флэш использовать не хотите? Вот посмотрите, какой есть замечательный продукт.
-------------------- Отдадим всё клиенту, пускай его машина мучается... |
|||
|
||||
fidres |
|
|||
![]() Бывалый ![]() Профиль Группа: Участник Сообщений: 159 Регистрация: 15.11.2006 Репутация: нет Всего: 1 |
ну а яваскрипт-то тут причём, если загрузка средствами php производится?!
вот и надо средствами php отслеживать статус загрузки... JavaScript хоть и потомок C, но всё же не столь силён... хотел было добавить, но сдержался. ![]() --------------------
Исправьте ошибку в слове <ХЕРОШО> и я скажу Вам оптимист Вы или пессимист. |
|||
|
||||
PyccHeBa |
|
|||
Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 6.10.2007 Репутация: нет Всего: нет |
С Флешем разбираться нужно долго, да и код больше станет. Ради такой мелочи как надпись "ждите" не стоит так усложнять жизнь.
А вот на php сделать это хорошая идея! Попробую, потом отпишусь |
|||
|
||||
Madferit |
|
|||
Новичок Профиль Группа: Участник Сообщений: 33 Регистрация: 11.7.2005 Где: Запорожье Репутация: нет Всего: 1 |
Для меня актуальна та же проблема:
Пользователь инициирует событи на стороне сервера. По событию сервер возвращает какой-то файл (пользователь получает диалог "Open"|"Save"|"Cancel"). Можно ли подписаться на какое-то Javascript событие, чтобы узнать что файл готов к загрузке (момент появление диалога) ? |
|||
|
||||
Ghirik |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 919 Регистрация: 26.3.2007 Репутация: 13 Всего: 20 |
Если я правильно понял, то вам нужно поймать событие получения браузером документа выданного сервером. Включите в отдаваемую сервером страницу такой кусочек:
Ну, вместо alert() - ваш JavaScript. -------------------- Отдадим всё клиенту, пускай его машина мучается... |
||||
|
|||||
Sannis |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 375 Регистрация: 14.8.2007 Где: Москва Репутация: нет Всего: 13 |
Какимим средствами Javascript вы это осуществляете? -------------------- |
|||
|
||||
Madferit |
|
||||
Новичок Профиль Группа: Участник Сообщений: 33 Регистрация: 11.7.2005 Где: Запорожье Репутация: нет Всего: 1 |
Sannis,
Событие на сервере инициируется простым Http-запросом, на стороне сервера специальным образом формируется Http-ответ, диалог "Open"|"Save"|"Cancel" отображается самим браузером в ответ на полученый Http-ответ, без каких либо телодвижений на стороне JavaScript. Ghirik,
Браузер получает не html-документ, а произольного формата файл (например pdf, zip, jpeg... да все что угодно). Поэтому, я ищу каким образом можно отловить событие получения файла с сервера (фактически, момент появление диалога "Open"|"Save"|"Cancel") на стороне страницы, что инициировала запрос. |
||||
|
|||||
Sannis |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 375 Регистрация: 14.8.2007 Где: Москва Репутация: нет Всего: 13 |
Т.е. просто пользователь нажимает на ссылку, указывающую на скрипт, отдающий файл? Это сообщение отредактировал(а) Sannis - 7.7.2008, 21:24 -------------------- |
|||
|
||||
Madferit |
|
|||
Новичок Профиль Группа: Участник Сообщений: 33 Регистрация: 11.7.2005 Где: Запорожье Репутация: нет Всего: 1 |
Sannis
Пользователь каким либо образом инициирует Http-запрос к серверу. Например: Клик по <Input type="Submit" /> Клик по ссылке www.mysite.com/DownloadFile?fileId=xxxxxx Инициирует выполнение скрипта который будет выполнять одно из перечисленных выше действий А сам файл отдается серверной частью. Реализованной, например, с помощью asp.net |
|||
|
||||
Sannis |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 375 Регистрация: 14.8.2007 Где: Москва Репутация: нет Всего: 13 |
Единственное, что можно сделать - повесить вызов функции на onclick этого элемента. Но тогда это может не везде выполнится и будет происходить до появления окна. Иначе никак :/
-------------------- |
|||
|
||||
Madferit |
|
||||||
Новичок Профиль Группа: Участник Сообщений: 33 Регистрация: 11.7.2005 Где: Запорожье Репутация: нет Всего: 1 |
Нашел решение, не ахти какое, но в моем случае подходит
Идея такая - использовать cookie для того чтобы среагировать на момент старта загрузки: клиент в ответ на запрос файла ждет не только файл но и cookie. Сервер, в свою очередь, в ответ на запрос отдает не только файл но и ожидаемый cookie. Подробнее: 1. В HTML страницы с которой инициируется загрузка файла, добавляется невидимый iframe:
2. Javascript, который выполняется, когда пользователь инициирует загрузку:
3. Javascript функция, которая определяет не установлен ли ожидаемый cookie
4. Cерверный обработчик отдает в ответ на запрос не только файл но и устанавливает cookie, что ждет клиент. Код опущен. |
||||||
|
|||||||
![]() ![]() ![]() |
Форум для вопросов, которые имеются в справочниках, но их поиск вызвал затруднения, или для разработчика требуется совет или просьба отыскать ошибку. Напоминаем: 1) чётко формулируйте вопрос, 2) приведите пример того, что уже сделано, 3) укажите явно, нужен работающий пример или подсказка о том, где найти информацию. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | JavaScript: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |