2009-09-12 4 views
1

J'ai un site web qui se charge une fois et puis chaque fois qu'un utilisateur clique sur un bouton au lieu de charger une nouvelle page, le contenu est juste remplacé par ajax. Cependant, sur l'une des pages j'utilise jquery-ui et par exemple, si j'atteris dans "index.html" et que je clique pour aller à cette page, le script ne se charge pas mais si je vais directement à cette page, le script charger correctement. J'ai essayé de conditionner le chargement du script en faisant. Mais le script ne chargera pas de toute façon ... qu'est-ce que je fais mal? J'ai essayé de le charger via $ .getScript() et d'autres façons comme au lieu de .bind en utilisant .live et bind pour charger et décharger mais pas de succès ... la façon dont ce site est chargé est comme expliqué ici: http://nettuts.com/javascript-ajax/how-to-load-in-and-animate-content-with-jquery/Charger un javascript et l'exécuter


Modifier Davis @ Jim: Je pense que ce est juste ce que je dois, juste pourquoi pas en cours d'exécution ?? J'ai fait la référence pour le contenu comme les scripts qu'il va charger et le panneau est un div où placer ces scripts encore le code ne fonctionne pas sur la page load =/

Répondre

2

Il y a deux choses à cet égard qui ont m'a mordu dans le passé. Le plus simple est que dans IE (6 au moins, peut-être pas 8), il y a un bug bizarre où les balises script/style/link doivent apparaître AFTER contenu affichable (je pense que IE doit afficher quelque chose - rien - " initialiser "le modèle de document". Je me suis arraché les cheveux pendant deux jours sur un projet il y a deux ans ... j'ai finalement réalisé que si je venais de déplacer le style et les balises de script au bas de la page, tout semblait fonctionner. Lorsque vous chargez le contenu, le script ne s'initialise jamais correctement, mais vous pouvez le forcer. J'ai une fonction dans mon PanelManager abstraction faire ceci:

// Load Content 
Panel.load = function(Content) { 

     // "null" the old (to clear it) 
    Panel.innerHTML = null; 

     // Load the content 
    Panel.innerHTML = Content; 

     // Load Scripts 
    var AllScripts = Panel.getElementsByTagName("script"); 
    var AllScriptsCnt = AllScripts.length; 
    for (var Cnt = 0; Cnt < AllScriptsCnt; Cnt++){ 
     var CurScript = document.createElement('script'); 
     CurScript.type = "text/javascript"; 
     CurScript.text = AllScripts[Cnt].text; 
     Panel.appendChild(CurScript); 
    }; 

}; 

Regardez la section « Scripts Charger » - il scanne le nouveau contenu pour les balises « script » et force alors la création d'éléments de script avec le même contenu - travaille un régal pour moi. (Notez que dans ce contexte "Panel" est juste une référence à un élément - généralement un DIV contenant le nouveau contenu.)

Espérons que cela aide.

Questions connexes