J'utilise du jQuery qui fonctionne bien dans tous les navigateurs sauf dans Internet Explorer 8 (et probablement pas dans les versions précédentes bien que je ne sois pas aussi inquiet à propos de ceux-ci.). J'utilise la fonction .each de jQuery pour faire une boucle sur tous les éléments d'un tableau JavaScript généré automatiquement sur ma page par le CMS assez rigide que j'utilise.Javascript dans Internet Explorer: Comment faire quelque chose après qu'une variable soit chargée/enregistrée
Par exemple, mon CMS écrit ce tableau d'objets d'image en javascript sur ma page:
paths = [];
paths[0] = new Image();
paths[0].src = "/path/to/image1"
paths[1] = new Image();
paths[1].src = "/path/to/image2"
paths[2] = new Image();
paths[2].src = "/path/to/image3"
paths[3] = new Image();
paths[3].src = "/path/to/image4"
Je suis alors en utilisant jQuery chaque fonction de boucle sur ce tableau et renvoie toutes les images dans une jolie petite liste non ordonnée .
Le problème est que lors de l'utilisation
$(document).ready(function() { ... });
travaille va bien dans FF/Safari/Chrome, etc., et effectivement en mesure de rendre ma liste non ordonnée à peu près immédiatement, Internet Explorer semble exécuter mon document.ready de jquery fonction avant d'enregistrer que le tableau 'paths' existe en JavaScript (même si ce jQuery est inclus après le code du tableau d'images). Je sais cela parce que je suis jeté une erreur «chemins est null/indéfini» dans IE.
Quand je l'ai changé de
$(document).ready(function() {
à
$(window).load(function() {
mon code a fonctionné comme il se doit dans IE car il exécute seulement mon jquery chaque «fonction après la page est chargée (qui ça craint parce que ça ralentit le temps de rendu et cause un 'décalage' dans ce que j'essaye de faire ... mais bon si ça marche). Cependant, il semble que l'IE tire toujours de ma fonction each tout en utilisant $ (window) .load avant d'enregistrer qu'un tableau nommé 'paths' existe si le site a été mis en cache.
Quelqu'un connaîtrait-il un moyen sûr de s'assurer que la variable de chemins est enregistrée par IE immédiatement afin que chaque fonction n'échoue pas?
Quelle version d'IE? – jcolebrand
IE8, je vais modifier la question pour mentionner que .. Merci! – flight643
Juste curieux ... change les 'paths = [];' 'var paths = [];' change-t-il? –