Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 05.04.2012, 00:37
Аспирант
Отправить личное сообщение для codingfighter Посмотреть профиль Найти все сообщения от codingfighter
 
Регистрация: 05.04.2012
Сообщений: 65

проверить загрузилась ли страница на аяксе
всех приветствую. в интернете к сожалению так и не нашел ответа на этот вопрос.. пробовал жонглировать с .live jquery но увы, пока что без успешно результата. Задача казалось бы простая. Аяксом загружается html и инсертится (innerhtml) в определенный див, например #mydiv. Так вот, необходимо выполнить определенное действие после того как страница загрузится. В идеале конечно нужно поставить вообще что-то вроде window.onload ну в крайнем случае только на этот див. Имги перебирать в массиве это не подходит, минимум потому что там еще может быть и ifram'ы. В общем нужно чтобы при многократной перезагрузке аяксом это событие вызывалось. На крайних случай так же подойдет jquery поставить какое-то событие на onload всех имг (по классу выбрать) в данный див.

Весьма надеюсь на советы. Кстати, еще заметил такой момент, если иннерhtml'ом инсертить iframe, то страница подвисает пока он не подгрузится, это можно вылечить без мега-жонглирований?
Ответить с цитированием
  #2 (permalink)  
Старый 05.04.2012, 14:05
Профессор
Отправить личное сообщение для Маэстро Посмотреть профиль Найти все сообщения от Маэстро
 
Регистрация: 02.07.2010
Сообщений: 642

Так если Вы пользуетесь AJAX и, скорее всего, он сделан на объекте xmlHttp (который работает на базе ActiveXObject/XMLHttpRequest), то при загрузке данных проверяйте состояние xmlHttp.readyState == 4 и xmlHttp.status == 200. Если статусы в норме - значит страница полностью загрузилась и её можно помещать в нужный DIV.
Если же принятом тексте есть iframe_ы и Вы хотите после вставки этого текста DIV_e отловить полную загрузку во фреймы, то тогда надо предусмотреть обработку события onload фрейма, либо вставить в эти фреймы (в самый конец) javascript-функции, оповещения о конце загрузки данных во фрейм. Естественно, что эти фреймы должны находиться в родственном домене.
Ответить с цитированием
  #3 (permalink)  
Старый 05.04.2012, 22:20
Аспирант
Отправить личное сообщение для codingfighter Посмотреть профиль Найти все сообщения от codingfighter
 
Регистрация: 05.04.2012
Сообщений: 65

аякс запрос выглядит примерно так:

$.get('/page.php?'+idvar, function(e) { showresult(e,somevar); }, 'html');


загружается текст, который передается в функцию showresult где и происходит его обработка, то есть формирвоание конечного html ну и затем делаем innerhtml. Где собственно проверку производить на readyState ? Помоему тут этот вариант не подойдет.

Что касается фреймов, это видео например с ютуба.
Ответить с цитированием
  #4 (permalink)  
Старый 05.04.2012, 22:43
Профессор
Отправить личное сообщение для Маэстро Посмотреть профиль Найти все сообщения от Маэстро
 
Регистрация: 02.07.2010
Сообщений: 642

1. Если Вы используете фреймворк и его метод $.get(), то этот метод как раз и проверяет (внутри себя) необходимые статусы. Если статус плохой, то запрос не отдаст Вам принятый текст. Я $.get() не пользуюсь. Посмотрите описание этого метода - там должна быть возможность возвращать Вам ошибки запроса для их анализа.

2. Для просмотра видео с ютуба совсем не обязательно использовать фреймы (и мучиться с ними). Вставляйте в свой html-текст Adobe Flash Player прямо в DIV_ы.
Ответить с цитированием
  #5 (permalink)  
Старый 06.04.2012, 00:31
Аспирант
Отправить личное сообщение для codingfighter Посмотреть профиль Найти все сообщения от codingfighter
 
Регистрация: 05.04.2012
Сообщений: 65

Ну можно установить обработчики .success() и .complete() только что это мне даст? Сам то текст загружен аяксом, понимаете? А загрузка картинок начинается уже при иннерhtml'e, т.к. в запрашиваемых аяксом данных картинок еще нет, их html код появляется уже в обрабатывающей функции callback (там идет парсинг текста).

Насчет ютуба, да я как бы и не мучаюсь, просто вставляю html код фреймов. Попробовал непосредственно обджектом - все равно подвисает страница ненадолго когда загружается обджект, так что особого смысла не вижу напрямую вставлять в див.
Ответить с цитированием
  #6 (permalink)  
Старый 06.04.2012, 15:11
Профессор
Отправить личное сообщение для Маэстро Посмотреть профиль Найти все сообщения от Маэстро
 
Регистрация: 02.07.2010
Сообщений: 642

Нуу, при медленном интернете на большинстве сайтов картинки появляются не сразу, а через какое-то время - все понимают почему так и как бы к этому привыкли уже. Можете всё грузить в скрытый фрейм, а потом по факту его загрузки делать видимым. Во время загрузки показывайте анимированный gif "loading"... Хотя как по мне это "крутящееся колесо" раздражает еще больше.
Ответить с цитированием
  #7 (permalink)  
Старый 06.04.2012, 20:19
Аспирант
Отправить личное сообщение для codingfighter Посмотреть профиль Найти все сообщения от codingfighter
 
Регистрация: 05.04.2012
Сообщений: 65

Кстати там тип не html а text. Оно ведь как я понимаю тогда просто выдает ответ "как есть". А вот насчет ifram'a - это идея в общем то неплохая.. но желательно сразу показать содержимое.. а может сразу показывать и параллельно создавать iframe? Но это конечно небережливое отношение к трафику пользователя

И всетаки, неужели с помощью jquery это так проблематично реализовать? ( Я смогу предварительно повесить на все имги, которые я хочу проверить загружились ли, скажем, айди какие-то, а потом по таймеру могу проверять, загрузились ли все они (Image.complete). Наверное так и сделаю. Это хоть что-то, хотя все имги так не получится проверить, но хоть основные. Кстати вроде бы где-то читал что .complete может некорректное что-то возращать если имга закэшировалась, это так? А если коннект будет закрыт? Есть тут те кто уже опыты проводил?

Последний раз редактировалось codingfighter, 06.04.2012 в 20:25.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как проверить загружены ли все картинки браузером Aderba jQuery 13 29.05.2014 14:18
В iframe не отображается страница с mootools-скриптом AndruSPB Internet Explorer 1 14.06.2011 19:36
Проверить существует ли элемент на ajax-странице Viper jQuery 0 15.04.2011 09:21
Как проверить ссылку на работоспособнось? Oleg_777 Общие вопросы Javascript 23 19.03.2009 18:57
Как проверить существование функции Aderba Общие вопросы Javascript 2 14.11.2008 16:09