Просмотр полной версии : Как отследить onload в iframe в ie8
Например это
document.getElementsByTagName("iframe")[0].onclick = function()
{
alert("sdf");
}
Работает во всех браузерах, кроме ie8. Точнее и в ie8 работате, но после отправки формы, связь теряется.
А как сделать так, чтобы и в Ie8 можно было отследить перезагрузку. Подскажите, пожалуйста.
.onclick
Дык onclick или onload ?
2. Лучше с фреймами работать по имени
Описка, он onload.
По имени то же самое.
frames.myframe.onload= function(){ console.log("111"); }
и так
frames[0].onload = function(){ console.log("111"); }
Т.е. событие работает, но только в момент загрузки фрейма, а после перезагрузки, т.е. после отправки формы, уже перестает работать. в ie9 опере хроме файфоксе, но нормально, проблема только в Ie8
platedz,
Пробуйте повесить на тег
<iframe src="http://javascript.ru/forum/" width=100% height="1700" onload="frameLoad(this)"></iframe>
<script>
function frameLoad(frame) {
alert("Загрузилось")
}
</script>
Большое спасибо, так вышло. Если еще объясните, почему предыдущие примеры не работали, то будет совсем здорово.
Думаю, что ответ скорее всего будет отрицательным, но тем не менее.
Возможно ли как-то отследить статус ответа iframe?
Возможно ли как-то отследить статус ответа iframe?
Если фрейм с того же домена - достаточно легко вставить внутрь фрейма скрипт - сообщающей внешней функции на основной странице об успешной загрузке...
Ошибка будет при превышении ожидания времени ответа данной функции после события оnload...
Может быть проще загружать контент фрейма Аяксом(при ссылке с того же домена) и не мучать фреймы ? и считывать статус ?
Дело в том, что нужно отловить не успешную загрузку, а например 502 ошибку, или любую другую ошибку сервера. В общем нужно узнать, что статус отличается от 200. Соответственно, если он не 200, то и скрипт в ответе передать не выйдет
С ajax конечно, проще, но в ie8 передать файл через него не получится.
В общем нужно узнать, что статус отличается от 200. Соответственно, если он не 200, то и скрипт в ответе передать не выйдет
С ajax конечно, проще, но в ie8 передать файл через него не получится.
http://learn.javascript.ru/ajax-xmlhttprequest
Это XMLHttpRequest, а у мне нужно узнать статус iframe
Не получите вы в фрейме статус, используйте для этого ajax, вам же уже написали. И с чего это вы решили, что в ie8 не получится? В 7м получается, если сильно нужно.
Потому что единственные известные мне способы отправки файла через ajax - это либо преобразование его в data:url, либо использование FormData, которые не поддерживаются id<10. Поэтому когда сильно нужно используется или фрэйм, или флеш
platedz,
Никто не мешает использовать аякс и фрейм одновременно - получать статус по Аяксу, а через фрейм дожидаться подгрузки... конечно это не 100% вероятность совпадения,
И второе, - по онлоад, вы можете прочесть контент фрейма и анализировать статус 200 или иной - по содержимому,
а отсутствие загрузки фрейма - по таймированию оnload,
устанавливая таймер одновременно с установкой/срабатыванием очередного оnload
или флеш
http://habrahabr.ru/post/132489/
Спасибо за ответы. Просто статус ответа проще анализировать. Если он пришел, и если он не 200, то можно что-то делать. А сам сервер может выдать любую ошибку, это надо каждую анализировать. А Ajax и фрейм все-таки разные ответы дадут. Т.е. Ajax может пройти нормально, а фрейм выдаст ошибку
а фрейм выдаст ошибку
Вы не показываете полную задачу, - поэтому советы экстрасенсорные...
Ежели Вам нужен ток статус 200, достаточно пользоваться только фреймом, поскольку при этом во фрейме будет какой то определенный ответ, (к примеру какой-то типичный заголовок на странице, который можно и отслеживать при загрузке...
При других вариантах - очевидно будет ответ, который нас не устроит... далее анализ и число повторных попыток или отсутствие оных...
И ощущение, что слишком много дебатов и мало попыток, в реальности не так страшен черт, как его малюют... если конечно у Вас не запуск ядрёной бомбы
vBulletin® v3.6.7, Copyright ©2000-2025, Jelsoft Enterprises Ltd. Перевод: zCarot