2009-06-30 11 views
0

Je rencontre des problèmes avec une application que j'écris qui utilise Dojo et Zend Framework. Le problème affecte uniquement Internet Explorer 6, d'autres versions d'IE, ff, chrome et safari fonctionnent correctement sans problèmes.dojo se bloque ie6 lors de l'utilisation de Zend Framework

Lorsque IE6 atterrit sur la page de connexion, il se bloque avec la boîte de dialogue Envoyer les détails vers Microsoft. Le script de connexion utilise dojo pour fournir une validation aux utilisateurs afin de s'assurer que leurs mots de passe sont correctement formatés.

J'ai vu sur certains forums que l'appel de la fonction addOnLoad() dans dojo pouvait être la cause et un window.setTimeout() aiderait. http://www.dojotoolkit.org/forum/dojo-core-dojo-0-9/dojo-core-support/dom-manipulation-addonload-crashes-ie6

Le problème que j'ai est comment manipuler l'en-tête de dojo que nous avons dans le layout.phtml dans l'application. Nous avons actuellement dans le fichier ce code dans l'en-tête.

<?php 
     $this->dojo()->setLocalPath($this->baseUrl().'/javascript/dojo/dojo.js'); 
     $this->dojo()->addStylesheetModule('dijit.themes.tundra'); 
     echo $this->dojo(); 

?> 

Ceci produit ce qui suit dans le code html.

 
    
dojo.require("dijit.form.ValidationTextBox"); 
    dojo.require("dijit.form.Button"); 
    dojo.require("dojo.parser"); 
dojo.addOnLoad(function() { 
    dojo.forEach(zendDijits, function(info) { 
     var n = dojo.byId(info.id); 
     if (null != n) { 
      dojo.attr(n, dojo.mixin({ id: info.id }, info.params)); 
     } 
    }); 
    dojo.parser.parse(); 
}); 
var zendDijits = [{"id":"username","params":{"regExp":"[a-z0-9_\\+-]+(\\.[a-z0-9_\\+-]+)*@[a-z0-9-]+(\\.[a-z0-9-]+)*\\.([a-z]{2,4})$","invalidMessage":"Please enter a valid email address","trim":"true","required":"true","dojoType":"dijit.form.ValidationTextBox"}},{"id":"password1","params":{"trim":"true","lowercase":"true","regExp":"^.*(?=.{6,})(?=.*\\d)(?=.*[a-zA-Z]).*$","invalidMessage":"Invalid Password. Password must be at least 6 alphanumeric characters","required":"true","dojoType":"dijit.form.ValidationTextBox"}},{"id":"submit","params":{"label":"Login","dojoType":"dijit.form.Button"}}]; 



Comment puis-je changer cela pour essayer et ajouter les correctifs mentionnés dans le lien, ou est-il une autre façon d'écrire cela sans IE6 écraser tout le temps ?? Je préférerais corriger cela que de supprimer toute la validation du client, juste au cas où le client utilise IE6.

... merci

+0

Le code ci-dessus semble correct. Y a-t-il autre chose sur la page qui pourrait être le coupable? J'ai à peu près la même chose (pas via Zend) fonctionnant sur IE6 sans aucun problème. – seth

+0

Pas vraiment tout ce que j'ai sont 2 boîtes de texte qui utilisent quelques regex pour vérifier que le nom d'utilisateur est une adresse e-mail et que le mot de passe correspond aux exigences de mot de passe, plus un bouton de connexion. A part ça, il n'y a pas d'autres composants du dojo. –

+0

Bizarre. Je viens de configurer cette page http://jsbin.com/utami3 et cela fonctionne très bien dans ma version de IE6. Quelle version de Dojo Zend utilise-t-elle? – seth

Répondre

1

Pouvez-vous réduire jusqu'à ce que vous trouver ce qui se plantait IE6? Enregistrez votre sortie en tant que code HTML statique, confirmez qu'il plante toujours IE et commencez à supprimer le code. Prenez complètement ce addOnLoad - est-ce qu'il plante toujours? sinon, supprimez le forEach, et ainsi de suite. Commencez à supprimer des éléments du tableau zendDijits - y en at-il un en particulier qui cause le problème?

Est-ce un stock IE6? Des plugins/addons?

Votre php devrait produire un élément de script pour extraire dojo.js. Vous avez quelque chose de bizarre qui se passe - ce code Zend est connu pour fonctionner, donc nous avons besoin de toutes les informations si vous voulez résoudre ce problème.

Questions connexes