@Dimazsever

Как узнать что iframe загрузился?

Подключаю виджет на страницу, который грузится в iframe. Как узнать, что страница во фрейме загрузилась? После этого нужно будет выполнить действия с некоторыми элементами, находящимися в iframe.
Только не предлагайте добавить атрибут onload, так как изначально фрейма не существует, его создает скрипт виджета.
  • Вопрос задан
  • 5988 просмотров
Решения вопроса 1
AloneCoder
@AloneCoder
[object Object]
Сам не пробовал
<script type="javascript">
var iframe = document.createElement("iframe");
iframe.src = "http://www.your_iframe.com/";
if (navigator.userAgent.indexOf("MSIE") > -1 && !window.opera) {
  iframe.onreadystatechange = function(){
    if (iframe.readyState == "complete"){
      alert("Iframe is now loaded.");
    }
  };
} else {
  iframe.onload = function(){
    alert("Iframe is now loaded.");
  };
}
</script>
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Deonisius
@Deonisius
Родился в 11110110111 году, 11000 января.
Если учитывать старые версии IE не нужно, то код ниже можео сократить, убрав функцию addEvent(), а вместо нее использовать addEventListener(). И кончено же, на мой личный взгляд, использование on+some_event - это не есть гуд, а уж тем более, использование обработчиков внутри тегов. Протестировать можно в песочнице.
var d = document,
    fr = d.createElement("iframe");
fr.id = 'my_frame';
fr.src = "http://toster.ru/";
d.body.appendChild(fr);

function addEvent(elem, type, handler){
  if(elem.addEventListener){
    elem.addEventListener(type, handler, false);
  } else {
    elem.attachEvent('on'+type, function(){ handler.call( elem ); });
  }
  return false;
}
function afterLoad(){
    console.log('Frame loaded!');
}
addEvent(fr, 'load', afterLoad);
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы