Как отследить onload в iframe в ie8
Например это
document.getElementsByTagName("iframe")[0].onclick = function() { alert("sdf"); } Работает во всех браузерах, кроме ie8. Точнее и в ie8 работате, но после отправки формы, связь теряется. А как сделать так, чтобы и в Ie8 можно было отследить перезагрузку. Подскажите, пожалуйста. |
Цитата:
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? |
Цитата:
Ошибка будет при превышении ожидания времени ответа данной функции после события оnload... Может быть проще загружать контент фрейма Аяксом(при ссылке с того же домена) и не мучать фреймы ? и считывать статус ? |
Дело в том, что нужно отловить не успешную загрузку, а например 502 ошибку, или любую другую ошибку сервера. В общем нужно узнать, что статус отличается от 200. Соответственно, если он не 200, то и скрипт в ответе передать не выйдет
С ajax конечно, проще, но в ie8 передать файл через него не получится. |
Цитата:
|
Это XMLHttpRequest, а у мне нужно узнать статус iframe
|
Не получите вы в фрейме статус, используйте для этого ajax, вам же уже написали. И с чего это вы решили, что в ie8 не получится? В 7м получается, если сильно нужно.
|
Потому что единственные известные мне способы отправки файла через ajax - это либо преобразование его в data:url, либо использование FormData, которые не поддерживаются id<10. Поэтому когда сильно нужно используется или фрэйм, или флеш
|
platedz,
Никто не мешает использовать аякс и фрейм одновременно - получать статус по Аяксу, а через фрейм дожидаться подгрузки... конечно это не 100% вероятность совпадения, И второе, - по онлоад, вы можете прочесть контент фрейма и анализировать статус 200 или иной - по содержимому, а отсутствие загрузки фрейма - по таймированию оnload, устанавливая таймер одновременно с установкой/срабатыванием очередного оnload |
Цитата:
|
Спасибо за ответы. Просто статус ответа проще анализировать. Если он пришел, и если он не 200, то можно что-то делать. А сам сервер может выдать любую ошибку, это надо каждую анализировать. А Ajax и фрейм все-таки разные ответы дадут. Т.е. Ajax может пройти нормально, а фрейм выдаст ошибку
|
Цитата:
Ежели Вам нужен ток статус 200, достаточно пользоваться только фреймом, поскольку при этом во фрейме будет какой то определенный ответ, (к примеру какой-то типичный заголовок на странице, который можно и отслеживать при загрузке... При других вариантах - очевидно будет ответ, который нас не устроит... далее анализ и число повторных попыток или отсутствие оных... И ощущение, что слишком много дебатов и мало попыток, в реальности не так страшен черт, как его малюют... если конечно у Вас не запуск ядрёной бомбы |
Часовой пояс GMT +3, время: 01:50. |