2017-02-09 95 views
-1

我想我需要一些帮助。我有以下代码检查我的页面上的iframe(包含google文档查看器文档)是否已加载,如果不加载,直到它最终发生加载。如何遍历元素集并检查每个元素是否在加载之前转到下一个元素?

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"); 
    }); 
}); 

如果有人有兴趣,为什么:这的确是必须的,因为谷歌文件浏览器中,而往往不能完全加载内容(然后中断处理)一次,所以你只有80%的机会,内容实际上是显示而不是空白。

上面的代码工作正常,但现在我的情况有我的网页上几个I帧。

我想达到什么是怎样的一个循环,对于每一个元素,直到它的内容被加载,然后进入下一个,直到所有的I帧被可靠地加载,并且真正显示的内容开始一个新的区间。

有人伸出援助之手如何实现这一目标?非常感谢!

回答

0

你可以做一个新的功能,给你需要加载作为参数的元素。也请在元素加载后调用回调:

function loadIframe(iframeElement, callback) { 
    function reloadIFrame() { 
     // force iframe to reload 
     iframeElement.src = iframeElement.src; 
    } 

    timerId = setInterval("reloadIFrame();", 2000); 

    jQuery(document).ready(function() { 
     jQuery(iframeElement).on('load', function() { 
      clearInterval(timerId); 
      callback(iframeElement); 
     }); 
    }); 
} 

// Here you can call the function 
var iframes = document.getElementsByClassName("preview-frame"); 

for (var i = 0, len = iframes.length; i < len; i++) { 
    loadIframe(iframes[i], function(element){ 
     console.log(element, 'finally loaded'); 
    }); 
} 
+0

嗨,先谢谢各位!看起来很酷,对我来说似乎合乎逻辑。但令人遗憾的是,它引发了一大堆错误,可能是由于iframe的性质(交叉起源?我不知道),其中还有“ReferenceError:找不到变量:reloadIFrame”,我实际上并不明白。 – Garavani

+0

@Garavani你可以尝试直接在“setInterval”(作为一个匿名函数)的回调中使用“reloadIFrame”函数。这应该修复参考错误。 –

相关问题