2010-06-11 4 views
0

Je travaille sur un système d'aide uniquement hors ligne qui nécessite de charger une grande quantité de données liées à la recherche dans un iframe avant que la fonctionnalité de recherche puisse être utilisée. En raison de la structure de dossier du projet, je ne peux pas utiliser les méthodes de chargement en arrière-plan liées à Ajax, car les fichiers dont j'ai besoin sont chargés de quelques répertoires "de plus en plus".Arrière-plan chargement javascript dans iframe sans utiliser jQuery/Ajax?

J'ai écrit du code qui retarde le chargement des données d'aide jusqu'à ce que le reste de la page Web soit chargé. Les données d'aide se composent d'un tas de fichiers javascript qui contiennent des informations sur les termes, ect qui existent dans les livres d'aide qui sont installés sur le système.

La page Web fonctionne correctement, jusqu'à ce que je commence à charger ces données d'aide dans un cadre iFrame caché. Pendant le chargement des fichiers javascript, je ne peux utiliser aucune page Web. Les liens qui nécessitent un petit fichier à télécharger pour survoler les effets n'apparaissent pas, javascript (changement d'onglet sur la page) n'a aucun effet. Je me demande s'il ne s'agit que d'une limitation de la façon dont javascript fonctionne, ou s'il y a quelque chose d'autre qui se passe ici. Une fois que tous les fichiers sont chargés pour le système d'aide, la page Web fonctionne comme prévu.

function test(){ 
    var MGCFrame = eval("parent.parent"); 
    if((ALLFRAMESLOADED == true)){ 
     t2 = MGCFrame.setTimeout("this.IHHeader.frames[0].loadData()",1); 

} 
    else{ 

    t1 = MGCFrame.setTimeout("this.IHHeader.frames[0].test()",1000); 
    } 
    } 

Les données de charge lancent simplement le processus de chargement des données.

Merci pour toute aide que vous pouvez fournir.

Répondre

0

Je chargeais pas mal de fichiers javascript --- environ 200 ou plus. J'ai minimisé le délai en combinant certains fichiers, et en utilisant la fonction getScript de jquery pour les autres. Pour aider le navigateur à ne pas bloquer tout en chargeant tous ces fichiers, j'ai rempli un tableau global avec une liste des fichiers à télécharger, puis j'ai appelé récursivement une fonction d'assistance qui attendait 100ms, puis appelée getScript, puis s'appelait elle-même. Cela a aidé à charger les fichiers en arrière-plan sans rendre le navigateur inutilisable.

+0

Suite de ce sujet ici: http://stackoverflow.com/questions/4158102/loading-large-amount-of-data-into-memory-most-efficient-way-to-do-this – user210099