2010-05-20 90 views
2

我们在web应用程序中使用了太多的iframe。在这些iframe中,我们加载可能还包含iframe等等的页面,直到N级别。获取iframe对象的最佳方法

现在我正在使用递归函数来找出JavaScript中所需的iframe对象。它工作正常,问题是当我们创建大型动态页面时可能包含多达1000个iframe。在这种情况下,我的递归函数花费太多时间来查找所需的iframe对象。

我怎样才能克服这个问题,或者这些是JavaScript的递归的任何替代方案。

由于

+0

我不知道什么应用程序正在做1000个iframes .... – Sarfraz 2010-05-20 07:37:40

+0

基本上它的一个结果页面反对一些搜索。在结果列表中,我们有一个图标来显示与每条记录相关的数据。因此,我们从服务器端对每个记录绘制一个ifram,最大页面大小为1000. 是的,我们也可以显示div和ON/OFF其可见性,但是使用它的时候有一些限制,所以我们去iframe。 – MUS 2010-05-20 07:44:53

+0

这几乎是XHR变得有用的地方 - iframe往往会消耗大量内存,因为每个内容都包含DOM的单独副本,脚本环境等。 – 2010-05-20 13:09:38

回答

1

尝试注册所有不同iframe到一个数组立即的onload之前(在用户仍然在等待)。这样你就不必组装所有的iframe,然后通过它们。 在你的页面的底部...

< /html> 
< script>iframes=document.getElementsByTagName("iframe")< /script> 

还是真的不知道你是如何识别每个iframe中 - 如果你正在寻找一个特定的ID或SRC - 尝试这是一个设置阵列

< /html> 
< script> 
iframes=document.getElementsByTagName("iframe") 
var iframe_stuff=[] 
var i=0 
while(iframes[i]) 
{ 
iframe_stuff[i]=[] 
iframe_stuff[i]["id"]=iframes[i].id 
iframe_stuff[i]["src"]=iframes[i].src 
i++ 
}< /script> 

所以,当你需要通过你的iframe列表数组已准备就绪。还记得在找到你想要的iframe后使用'break'。如果你发现iframe是在第4号,休息会停止搜索那里,而不是检查其余的...