2010-04-22 4 views
0

Je rencontre des problèmes avec $ (document) .ready ne pas être exécuté dans IE6, mais seulement après avoir effacé les fichiers Internet temporaires (donc en fait la toute première fois que cette page est chargée). Lors de l'actualisation de la page ou des chargements de page ultérieurs, tout fonctionne correctement.

Ceci est la configuration actuelle:

  • page du portail avec des cadres, cette page portail a aussi une méthode de window.load (peut-être que nous avons un problème de course avec jQuery prêt ??):

    window.onload = function() { 
    try { 
        expireCookie("COOKIE%2DID"); 
        loadMenu(); 
    } catch (pcbException) { 
        reportError(pcbException); 
    } 
    } 
    
    • Dans cette page, notre page actuelle est chargée. Au bas de cette page, nous avons:

< langage script = "javascript" >

try {

$ ("# CR") remove();.

} catch (ex) {}

$ (document) .ready (function() { alerte (typeof $); // vérifier si la méthode est CHAISE RendererPageIsLoading(); // charge des données dans des zones de liste déroulantes et masque divs });

</script > </body >

J'utilise la dernière version de jQuery (1.4.2). Modifier: jquery est obtenir chargé dans la section de la tête de la page courante:

<script language="javascript" type="text/javascript" src="https://fulldomain/js/jquery.js"></script> 

Après sujet n'a pas apporté de solutions: jQuery $(document).ready() failing in IE6

+0

Comment chargez-vous jQuery? C'est probablement la raison de votre erreur. – Kobi

+0

Comment la «page actuelle» est-elle «chargée»? Voulez-vous définir iframe src' dans la page parente? – bobince

+0

Nous utilisons frameset/frames, pas un iframe. Code utilisé (cible = cadre): if (typeof target.location == "objet") { target.location.href = url; } else { target.src = url; \t \t} – Bart

Répondre

3

Quelqu'un a suggéré (il ne supprimait sa réponse plus tard) que attacher une méthode à window.onload détache la méthode définie dans l'événement $ (document) .ready(). Cependant, puisque l'erreur ne s'est produite que la première fois que la page a été chargée, à mon avis, cela devait être un problème de cache. Après une enquête plus poussée, nous avons découvert que IE6 avait des problèmes avec un png transparent qui n'a pas été chargé correctement. Par conséquent, le navigateur attend le chargement de l'image et IE6 attend sur les images avant de déclencher l'événement DOM ready. Conclusion: vérifiez également les images transparentes png si vous rencontrez des problèmes avec IE6.

0

Si vous ajoutez un script juste avant la balise «/body », vous n'avez pas besoin d'utiliser:

$(document).ready(...); 

Comme le document est prêt (barre de «/body » et «/html "). Il est vraiment utile si vous avez un fichier JavaScript externe qui peut être chargé plus vite que la page - dans ce cas, il retarde l'exécution jusqu'à ce que le DOM soit prêt (ou dans certains navigateurs les requêtes DOM et HTTP ... est plus proche de window.onload, qui attend toutes les images, par exemple).

+1

Il est probablement toujours une bonne idée d'avoir '$ (document) .ready (...);', dans le cas où le code est déplacé dans le document plus tard. De cette façon, le code n'a pas besoin d'être modifié. –

+0

Je suis d'accord avec Christopher. '$ (document) .ready (...);' permet également de déplacer tout votre javascript dans un fichier séparé et de le séparer complètement de votre HTML. Je pense que c'est très utile pour les fichiers de code plus volumineux. – Bart

+0

Je pense réellement que vous devriez utiliser $ (document) .ready (...) quand c'est approprié - pas en règle générale ou "juste au cas où". Être un développeur, c'est penser à votre code et ne pas écrire du code qui n'est pas nécessaire. @Christopher Parker - ajoutez-le quand vous déplacez le code, c'est quand il est nécessaire - pas avant. @Bart - ajoutez-le quand vous déplacez votre script dans un fichier séparé - pas avant. – Fenton

Questions connexes