Question

J'ai un Webscript (fichier .js) développé pour une application Alfresco. Il gère un bouton qui affiche un formulaire visant à sélectionner les membres qui ont souscrit à un espace Alfresco, afin de leur envoyer un courrier.
Toutes les cases sont générées dynamiquement avec les noms des abonnés.
Vous pouvez vérifier tous les membres que vous voulez et vous avez également une case à cocher spéciale qui vous permet de sélectionner ou désélectionner tous les membres.
Cette case à cocher spécifique fonctionne correctement sur Chrome et Firefox.
Cependant, lorsque vous vérifiez sur Internet Explorer 8, aucun des membres sont sélectionnés ou décochée, si les noms sont-ils vérifier ou non.
Voici l'exemple de code de la génération de la forme et des fonctions onClick déclenché lorsque vous cochez la case:

   updateMembersList : function TS_updateMembersList(containerId)
   {
       var div = Dom.get(containerId);
       div.innerHTML = "<div class=\"memberDiv\">" +
           "<input type=\"checkbox\" id=\"selectDeselectAllCb\" checked=\"true\" onchange=\"YAHOO.Bubbling.fire('selectDeselectAllChanged')\" class=\"memberCb\"/>" +
           "<label for=\"selectDeselectAllCb\" class=\"memberLabel\">" + 
           this.msg('label.selectDeselectAll') + "</label>" +
           "</div>";

       for (var i=0; i<this.members.length; i++)
       {
           var member = this.members[i];
           var avatar = Alfresco.constants.URL_CONTEXT + "/components/images/no-user-photo-64.png";

           if (member.authority.avatar && member.avatar != "")
           {

               avatar = Alfresco.constants.PROXY_URI + member.authority.avatar + "?c=force";
           }
           div.innerHTML += "<div class=\"memberDiv\">" +

                "<input type=\"checkbox\" id=\"cb_" + member.authority.userName + "\" checked=\"true\" onchange=\"YAHOO.Bubbling.fire('selectDeselectMemberChanged')\" class=\"memberCb\"/>" +
                "<label for=\"cb_" + member.authority.userName + "\" class=\"memberLabel\">" + 
                        member.authority.firstName + " " + member.authority.lastName + "</label>" +
                "</div>";
       }
   },


   selectDeselectAllChanged: function selectDeselectAllChanged(){
       var selectDeselectAllCb = Dom.get('selectDeselectAllCb');
       var checked = selectDeselectAllCb.checked;
       console.log("Select All");
       var cbs = YAHOO.util.Selector.query("input[id^='cb_']");

       for (var i=0, j=cbs.length; i<j; i++)
       {
           var cb = cbs[i];
           cb.checked = checked;
       }
   },

   selectDeselectMemberChanged: function selectDeselectMemberChanged(){
       var selectDeselectAllCb = Dom.get('selectDeselectAllCb');
       var cbs = YAHOO.util.Selector.query("input[id^='cb_']");

       var firstChecked;
       if (cbs[0] != null){
           firstChecked = cbs[0].checked;
       }

       for (var i=0, j=cbs.length; i<j; i++)
       {
           var cb = cbs[i];
           if (cb.checked === firstChecked){
               continue;
           }
           else{
               selectDeselectAllCb.checked = false;
               return;
           }
       }
       selectDeselectAllCb.checked = firstChecked;
   },

Au début, je pensais que la requête n'a pas été pris en charge par IE8, mais ce n'est pas le cas.
Une telle syntaxe est prise en charge par IE7 et les versions plus récentes.

Était-ce utile?

La solution 2

J'ai résolu le problème. Je l'ai remplacé le gestionnaire d'événements onchange par un gestionnaire d'événements onclick. En effet, onchange a un comportement aléatoire sur Internet Explorer, alors que onclick fonctionne très bien dans la plupart des cas. Merci pour l'aide.

Autres conseils

Essayez de retirer console.log("Select All"); et le remplacer par Alfresco.logger.debug ( "Sellect tous"); IE ne pas comme objet de la console.

En outre, exécutez votre code sur JSLint -. Si vous avez un JSON invalide là quelque part, arrête IE

En outre, essayez d'exécuter IE en mode développeur -. Configurer pour vous montrer les erreurs de script et vous saurez où il arrête

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top