Думаю, мне нужна помощь. У меня есть следующий код, который проверяет, загружен ли iframe (содержащий документ Google Doc viewer) на моей странице, и если он не перезагружает его, пока он, наконец, не будет загружен.Как перебирать набор элементов и проверять каждый, если они загружены, прежде чем перейти к следующему?
function reloadIFrame() {
// force iframe to reload
document.getElementsByClassName("preview-frame").src=document.getElementsByClassName("preview-frame").src;
}
timerId = setInterval("reloadIFrame();", 2000);
jQuery(document).ready(function() {
jQuery('.preview-frame').on('load', function() {
clearInterval(timerId);
console.log("Finally Loaded");
});
});
В случае, если кто интересуется, почему: это действительно необходимо, потому что Google Doc просмотр, как правило, не в полной мере загрузить содержимое (а затем прерывает процесс) один раз в то время, и поэтому у вас есть только 80% вероятность того, что содержание на самом деле отображается вместо пустого пространства.
Этот код работает нормально, но теперь у меня есть ситуация, когда на моей странице есть несколько фреймов.
То, что я хочу достичь, - это тип цикла, который для каждого элемента запускает новый интервал, пока его содержимое не будет загружено, а затем перейдет к следующему, пока все фреймы не будут надежно загружены и контент действительно будет отображаться.
Кто-то с рукой помощи, как этого достичь? Большое спасибо заранее!
Привет, спасибо, во-первых, все! Выглядит очень круто и кажется мне логичным. Но, к сожалению, это бросает океан ошибок, возможно, из-за характера iframe (крест-происхождение? Я не знаю) среди них также «ReferenceError: Не могу найти переменную: reloadIFrame», которую я на самом деле не понимаю. – Garavani
@Garavani Вы можете попытаться включить функцию reloadIFrame непосредственно в обратном вызове «setInterval» (как анонимную функцию). Это должно исправить опорную ошибку. –