2010-05-20 2 views
2

Мы используем слишком много iframe в веб-приложении. В этих iframe мы загружаем страницы, которые могут также содержать iframe и так далее до уровня N.Лучший способ получить объект iframe

Прямо сейчас я использую рекурсивную функцию, чтобы узнать требуемый объект iframe в JavaScript. Он отлично работает. Проблема заключается в том, когда мы создаем большие динамические страницы, которые могут содержать до 1000 iframe. В этом случае моя рекурсивная функция занимает слишком много времени, чтобы найти требуемый объект iframe.

Как я могу преодолеть эту проблему, или это любая альтернатива рекурсии в JavaScript.

Благодаря

+0

Интересно, что приложение работает с 1000 iframes .... – Sarfraz

+0

В основном это страница результатов против некоторого поиска. В списке результатов есть значок, показывающий данные, относящиеся к каждой записи. Поэтому мы рисуем ifram против каждой записи со стороны сервера, а максимальный размер страницы - 1000. Да, мы также можем показать div и ON/OFF его видимость, но были некоторые ограничения, чтобы использовать его, поэтому мы идем на iframe. – MUS

+0

Это очень много, где XHR становится полезным - iframes имеют тенденцию потреблять много памяти, поскольку каждая из них содержит отдельную копию DOM, среду сценариев и т. Д. –

ответ

1

попробовать регистрации все плавающие фреймы в массив непосредственно перед OnLoad (в то время как пользователь все еще ждет). Таким образом, вам не нужно собирать все фреймы и только потом пройти через них. в нижней части страницы ...

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

До сих пор не уверен, как вы идентифицировать каждый IFRAME - так что если вы ищете определенный идентификатор или СРК - попробовать это как массив настройки

< /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> 

Итак, когда вам нужно пройти через ваши фреймы, массив списка будет готов. Также не забудьте использовать «break» после того, как вы нашли нужный iframe. Если ваш найденный iframe находится под номером 4, перерыв остановит поиск там, а не проверит остальное ...

Смежные вопросы