2010-05-20 4 views
2

Nous utilisons trop d'iframes dans une application web. Dans ces iframes, nous chargeons les pages qui peuvent aussi contenir des iframes et ainsi de suite jusqu'au niveau N.Meilleur moyen d'obtenir l'objet iframe

En ce moment j'utilise la fonction récursive pour trouver l'objet iframe requis en JavaScript. Cela fonctionne très bien, le problème est lorsque nous créons de grandes pages dynamiques qui peuvent contenir jusqu'à 1000 iframes. Dans ce cas, ma fonction récursive prend trop de temps pour trouver l'objet iframe requis.

Comment puis-je résoudre ce problème ou il s'agit d'une alternative de récursivité en JavaScript.

Merci

+0

Je me demande ce que l'application est en train de faire avec 1000 iframes .... – Sarfraz

+0

Fondamentalement, c'est une page de résultats contre une recherche. Dans la liste des résultats, nous avons une icône pour afficher les données relatives à chaque enregistrement. Nous dessinons donc un ifram contre chaque enregistrement côté serveur et la taille maximale est de 1000. Oui, nous pouvons aussi montrer une div et ON/OFF sa visibilité mais il y avait quelques limitations pour l'utiliser, donc nous allons pour iframe. – MUS

+0

C'est à peu près là où XHR devient utile - les iframes ont tendance à consommer beaucoup de mémoire car chacune contient une copie distincte du DOM, de l'environnement de script, etc. –

Répondre

1

inscrire tous les essayer iframes dans un tableau immédiatement avant onload (alors que l'utilisateur attend toujours). De cette façon, vous n'avez pas à assembler tous les iframes et ensuite seulement à travers eux. au bas de la page ...

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

Pas encore vraiment comment vous désignez chaque iframe - donc si vous êtes à la recherche d'un identifiant particulier ou src - essayez ceci comme un tableau de configuration

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

Ainsi, lorsque vous devez passer par vos iframes, la liste est prête. N'oubliez pas d'utiliser 'break' après avoir trouvé l'iframe que vous voulez. Si votre iframe trouvé est au numéro 4, pause va arrêter la recherche là et ne pas vérifier le reste ...