Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Как отследить onload в iframe в ie8 (https://javascript.ru/forum/events/38484-kak-otsledit-onload-v-iframe-v-ie8.html)

platedz 03.06.2013 22:12

Как отследить onload в iframe в ie8
 
Например это
document.getElementsByTagName("iframe")[0].onclick = function()
	{
		alert("sdf");
	}

Работает во всех браузерах, кроме ie8. Точнее и в ie8 работате, но после отправки формы, связь теряется.
А как сделать так, чтобы и в Ie8 можно было отследить перезагрузку. Подскажите, пожалуйста.

Deff 03.06.2013 22:15

Цитата:

Сообщение от platedz
.onclick

Дык onclick или onload ?
2. Лучше с фреймами работать по имени

platedz 03.06.2013 22:35

Описка, он onload.
По имени то же самое.
frames.myframe.onload= function(){ console.log("111"); }
и так
frames[0].onload = function(){ console.log("111"); }

Т.е. событие работает, но только в момент загрузки фрейма, а после перезагрузки, т.е. после отправки формы, уже перестает работать. в ie9 опере хроме файфоксе, но нормально, проблема только в Ie8

Deff 03.06.2013 22:43

platedz,
Пробуйте повесить на тег
<iframe src="http://javascript.ru/forum/" width=100% height="1700" onload="frameLoad(this)"></iframe>
<script>
function frameLoad(frame) {
  alert("Загрузилось")
}
</script>

platedz 03.06.2013 23:05

Большое спасибо, так вышло. Если еще объясните, почему предыдущие примеры не работали, то будет совсем здорово.

platedz 10.06.2013 23:32

Думаю, что ответ скорее всего будет отрицательным, но тем не менее.
Возможно ли как-то отследить статус ответа iframe?

Deff 11.06.2013 00:20

Цитата:

Сообщение от platedz
Возможно ли как-то отследить статус ответа iframe?

Если фрейм с того же домена - достаточно легко вставить внутрь фрейма скрипт - сообщающей внешней функции на основной странице об успешной загрузке...
Ошибка будет при превышении ожидания времени ответа данной функции после события оnload...

Может быть проще загружать контент фрейма Аяксом(при ссылке с того же домена) и не мучать фреймы ? и считывать статус ?

platedz 11.06.2013 01:30

Дело в том, что нужно отловить не успешную загрузку, а например 502 ошибку, или любую другую ошибку сервера. В общем нужно узнать, что статус отличается от 200. Соответственно, если он не 200, то и скрипт в ответе передать не выйдет
С ajax конечно, проще, но в ie8 передать файл через него не получится.

Deff 11.06.2013 02:33

Цитата:

Сообщение от platedz
В общем нужно узнать, что статус отличается от 200. Соответственно, если он не 200, то и скрипт в ответе передать не выйдет
С ajax конечно, проще, но в ie8 передать файл через него не получится.

http://learn.javascript.ru/ajax-xmlhttprequest

platedz 11.06.2013 02:47

Это XMLHttpRequest, а у мне нужно узнать статус iframe

zilker 11.06.2013 16:49

Не получите вы в фрейме статус, используйте для этого ajax, вам же уже написали. И с чего это вы решили, что в ie8 не получится? В 7м получается, если сильно нужно.

platedz 11.06.2013 17:59

Потому что единственные известные мне способы отправки файла через ajax - это либо преобразование его в data:url, либо использование FormData, которые не поддерживаются id<10. Поэтому когда сильно нужно используется или фрэйм, или флеш

Deff 11.06.2013 18:18

platedz,
Никто не мешает использовать аякс и фрейм одновременно - получать статус по Аяксу, а через фрейм дожидаться подгрузки... конечно это не 100% вероятность совпадения,
И второе, - по онлоад, вы можете прочесть контент фрейма и анализировать статус 200 или иной - по содержимому,
а отсутствие загрузки фрейма - по таймированию оnload,
устанавливая таймер одновременно с установкой/срабатыванием очередного оnload

Deff 11.06.2013 18:35

Цитата:

Сообщение от platedz
или флеш

http://habrahabr.ru/post/132489/

platedz 11.06.2013 22:50

Спасибо за ответы. Просто статус ответа проще анализировать. Если он пришел, и если он не 200, то можно что-то делать. А сам сервер может выдать любую ошибку, это надо каждую анализировать. А Ajax и фрейм все-таки разные ответы дадут. Т.е. Ajax может пройти нормально, а фрейм выдаст ошибку

Deff 12.06.2013 03:20

Цитата:

Сообщение от platedz
а фрейм выдаст ошибку

Вы не показываете полную задачу, - поэтому советы экстрасенсорные...

Ежели Вам нужен ток статус 200, достаточно пользоваться только фреймом, поскольку при этом во фрейме будет какой то определенный ответ, (к примеру какой-то типичный заголовок на странице, который можно и отслеживать при загрузке...
При других вариантах - очевидно будет ответ, который нас не устроит... далее анализ и число повторных попыток или отсутствие оных...
И ощущение, что слишком много дебатов и мало попыток, в реальности не так страшен черт, как его малюют... если конечно у Вас не запуск ядрёной бомбы


Часовой пояс GMT +3, время: 08:56.