 
			
				05.04.2012, 00:37
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Аспирант 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 05.04.2012 
					
					
					
						Сообщений: 65
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
			
			 
				проверить загрузилась ли страница на аяксе
			 
			
		
		
		
		всех приветствую. в интернете к сожалению так и не нашел ответа на этот вопрос.. пробовал жонглировать с .live jquery но увы, пока что без успешно результата. Задача казалось бы простая. Аяксом загружается html и инсертится (innerhtml) в определенный див, например #mydiv. Так вот, необходимо выполнить определенное действие после того как страница загрузится. В идеале конечно нужно поставить вообще что-то вроде window.onload ну в крайнем случае только на этот див. Имги перебирать в массиве это не подходит, минимум потому что там еще может быть и ifram'ы. В общем нужно чтобы при многократной перезагрузке аяксом это событие вызывалось. На крайних случай так же подойдет jquery поставить какое-то событие на onload всех имг (по классу выбрать) в данный див. 
 
Весьма надеюсь на советы. Кстати, еще заметил такой момент, если иннерhtml'ом инсертить iframe, то страница подвисает пока он не подгрузится, это можно вылечить без мега-жонглирований? 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				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-функции, оповещения о конце загрузки данных во фрейм. Естественно, что эти фреймы должны находиться в родственном домене. 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				05.04.2012, 22:20
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Аспирант 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 05.04.2012 
					
					
					
						Сообщений: 65
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		аякс запрос выглядит примерно так: 
$.get('/page.php?'+idvar, function(e) { showresult(e,somevar); }, 'html');
загружается текст, который передается в функцию showresult где и происходит его обработка, то есть формирвоание конечного html ну и затем делаем innerhtml. Где собственно проверку производить на readyState ? Помоему тут этот вариант не подойдет.
 
Что касается фреймов, это видео например с ютуба.  
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				05.04.2012, 22:43
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 02.07.2010 
					
					
					
						Сообщений: 642
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
		
		
		 1. Если Вы используете фреймворк и его метод $.get(), то этот метод как раз и проверяет (внутри себя) необходимые статусы. Если статус плохой, то запрос не отдаст Вам принятый текст. Я $.get() не пользуюсь. Посмотрите описание этого метода - там должна быть возможность возвращать Вам ошибки запроса для их анализа. 
 
2. Для просмотра видео с ютуба совсем не обязательно использовать фреймы (и мучиться с ними). Вставляйте в свой html-текст Adobe Flash Player прямо в DIV_ы. 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				06.04.2012, 00:31
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Аспирант 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 05.04.2012 
					
					
					
						Сообщений: 65
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
		
		
		 Ну можно установить обработчики .success() и .complete() только что это мне даст? Сам то текст загружен аяксом, понимаете? А загрузка картинок начинается уже при иннерhtml'e, т.к. в запрашиваемых аяксом данных картинок еще нет, их html код появляется уже в обрабатывающей функции callback (там идет парсинг текста). 
 
Насчет ютуба, да я как бы и не мучаюсь, просто вставляю html код фреймов. Попробовал непосредственно обджектом - все равно подвисает страница ненадолго когда загружается обджект, так что особого смысла не вижу напрямую вставлять в див. 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				06.04.2012, 15:11
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Профессор 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 02.07.2010 
					
					
					
						Сообщений: 642
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	| 
	
	
		
		
		
		
		 Нуу, при медленном интернете на большинстве сайтов картинки появляются не сразу, а через какое-то время - все понимают почему так и как бы к этому привыкли уже. Можете всё грузить в скрытый фрейм, а потом по факту его загрузки делать видимым. Во время загрузки показывайте анимированный gif "loading"... Хотя как по мне это "крутящееся колесо"  раздражает еще больше. 
		
	
		
		
		
		
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
	
	
	
		
	
		
		
		
			
			 
			
				06.04.2012, 20:19
			
			
			
		  
	 | 
 
	
		
		
		
			
			| 
			
				
				
				 Аспирант 
				
				
				
				
	
 
 
 
			 | 
			  | 
			
				
				
					Регистрация: 05.04.2012 
					
					
					
						Сообщений: 65
					 
					
					
			
		
 
		 
		
			 | 
		 
		 
		
	 | 
 
	
	
	
		
		
		
		
		Кстати там тип не html а text. Оно ведь как я понимаю тогда просто выдает ответ "как есть". А вот насчет ifram'a - это идея в общем то неплохая.. но желательно сразу показать содержимое.. а может сразу показывать и параллельно создавать iframe? Но это конечно небережливое отношение к трафику пользователя   
И всетаки, неужели с помощью jquery это так проблематично реализовать? ( Я смогу предварительно повесить на все имги, которые я хочу проверить загружились ли, скажем, айди какие-то, а потом по таймеру могу проверять, загрузились ли все они (Image.complete). Наверное так и сделаю. Это хоть что-то, хотя все имги так не получится проверить, но хоть основные. Кстати вроде бы где-то читал что .complete может некорректное что-то возращать если имга закэшировалась, это так? А если коннект будет закрыт? Есть тут те кто уже опыты проводил?  
		
	
		
		
		
		
		
		
		
						  
				
				Последний раз редактировалось codingfighter, 06.04.2012 в 20:25.
				
				
			
		
		
	
		
		
	
	
	 | 
 
 
	 
		 | 
 
 
 
 |  
  |