Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > JavaScript
JavaScript Forum programmation JavaScript. Lire : Cours JavaScript, FAQ JavaScript, Toutes les FAQ JavaScript et Sources JavaScript
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 28/06/2011, 14h27   #1
Nouveau Membre du Club
 
Benjamin
Développeur .NET
Inscription : septembre 2010
Messages : 78
Détails du profil
Informations personnelles :
Nom : Benjamin
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Développeur .NET
Secteur : Service public

Informations forums :
Inscription : septembre 2010
Messages : 78
Points : 39
Points : 39
Par défaut [FF / IE] IndexOf + KeyDown non fonctionnel

Bonjour tout le monde,

Je reviens avec un nouveau soucis Voila je viens de m'apercevoir que pas mal de fonctionnalité importante du projet en cours ne fonctionne pas sur IE6, après moulte test j'ai isolé le problème :

Code :
1
2
for (j = 0; j < AllCol[ColNonValide[i][1]].length; j++)
      {        ...}
Il semblerait donc que IE6 n'accepte pas du tout les tableaux à deux dimensions en JS, chose qui ne pose pas de problème sous FireFox. Cependant je ne vois pas comment corriger mon problème sans refaire une complète refonte, chose que j'envisage que TRÈS TRÈS moyennement

Est-ce que vous aurez des pistes pour régler mon problème ? Je vous remercie par avance !

Ps : C'est bien sur cette ligne que ca plante j'en suis sur (Alert avant et après la ligne, j'ai que le premier alert).
Rhend est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/06/2011, 14h36   #2
Membre Expert
 
Avatar de Watilin
 
Homme Matilin Torre
Étudiant
Inscription : juin 2010
Messages : 679
Détails du profil
Informations personnelles :
Nom : Homme Matilin Torre
Âge : 23
Localisation : France, Ille et Vilaine (Bretagne)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : juin 2010
Messages : 679
Points : 1 202
Points : 1 202
http://fr.w3support.net/index.php?db=so&id=194650

IE6 supporte les tableaux multi-dimensionnés.

Si tu places ceci juste avant la ligne à problème, tu obtiens quoi ?
Code JS :
alert(AllCol + '\n' + ColNonValide + '\n' + i);
__________________
Disposition de clavier ergonomique française : Bépo
Watilin est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 28/06/2011, 15h06   #3
Nouveau Membre du Club
 
Benjamin
Développeur .NET
Inscription : septembre 2010
Messages : 78
Détails du profil
Informations personnelles :
Nom : Benjamin
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Développeur .NET
Secteur : Service public

Informations forums :
Inscription : septembre 2010
Messages : 78
Points : 39
Points : 39
Alors ca me met le résultat de mon tableau ColNonValide entier et AllCol n'a aucune donnée... Effectivement le soucis viens sans doute de la

[Edit] Okay donc je pense en faite que c'est ce morceau de code là qui n'est pas comprit sous IE

Code :
1
2
3
$('table').each(
        function()
        {
Sachant que c'est un bout de code qui est censer me remplir mon tableau AllCol
Rhend est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/06/2011, 11h02   #4
Nouveau Membre du Club
 
Benjamin
Développeur .NET
Inscription : septembre 2010
Messages : 78
Détails du profil
Informations personnelles :
Nom : Benjamin
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Développeur .NET
Secteur : Service public

Informations forums :
Inscription : septembre 2010
Messages : 78
Points : 39
Points : 39
Bon en faite c'est l'IndexOf qui n'existe pas sous IE et j'ai donc du rajouter un bout de code pour que cela fonctionne, je le met ici sa peut toujours servir :

Code :
1
2
3
4
5
6
7
8
9
10
if(!Array.indexOf){
	    Array.prototype.indexOf = function(obj){
	        for(var i=0; i<this.length; i++){
	            if(this[i]==obj){
	                return i;
	            }
	        }
	        return -1;
	    }
	}
Cependant maintenant j'ai un autre problème, il semblerait que l'évènement KeyDown ne sois pas prit en compte sous IE si jamais vous avez une solution c'est avec plaisir
Rhend est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/06/2011, 11h22   #5
Rédacteur/Modérateur
 
Avatar de SpaceFrog
 
Homme
Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Inscription : mars 2002
Messages : 30 019
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Royaume-Uni

Informations professionnelles :
Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Secteur : Industrie

Informations forums :
Inscription : mars 2002
Messages : 30 019
Points : 45 114
Points : 45 114
Citation:
IndexOf qui n'existe pas sous IE
A mon avis au dernier carrefour tu as du te tromper de direction et tu es tombé dans une dimension parallèle, un monde curieux dans le quel IE ne reconnais pas indexOf ...
Fais demi tour et reviens dans notre dimension ...
__________________
Ma page Developpez
Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
Votre post est résolu ? Alors n'oubliez pas le Tag


réalisations :www.planet-languages.com|www.saftair.com| www.ouestisol.fr | www.sebemex.fr | www.extramiante.fr | www.sistac-alizay.fr | www.acoustishop.fr | www.litt.fr | www.ouestventil.fr
SpaceFrog est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/06/2011, 11h30   #6
Nouveau Membre du Club
 
Benjamin
Développeur .NET
Inscription : septembre 2010
Messages : 78
Détails du profil
Informations personnelles :
Nom : Benjamin
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Développeur .NET
Secteur : Service public

Informations forums :
Inscription : septembre 2010
Messages : 78
Points : 39
Points : 39
Ben écoute j'ai pourtant été bien obliger de rajouter la fonction IndexOf() parce que quand j’exécutais mon code JS sur un clic ca plantais sur cette ligne

Code :
 test.indexOf("GV_EtatSalaire_TB|", 0) >= 0
Chose résolue en rajoutant le code mis plus haut. J'avoue tomber un peu de haut des différences énorme entre FF et IE Et je m'arrache les cheveux ...
Rhend est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/06/2011, 11h32   #7
Rédacteur/Modérateur
 
Avatar de SpaceFrog
 
Homme
Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Inscription : mars 2002
Messages : 30 019
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Royaume-Uni

Informations professionnelles :
Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Secteur : Industrie

Informations forums :
Inscription : mars 2002
Messages : 30 019
Points : 45 114
Points : 45 114
Code :
1
2
test="kjhkjGV_EtatSalaire_TB|"
alert(test.indexOf("GV_EtatSalaire_TB|", 0))
resultat un alert 5 ... sous IE
__________________
Ma page Developpez
Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
Votre post est résolu ? Alors n'oubliez pas le Tag


réalisations :www.planet-languages.com|www.saftair.com| www.ouestisol.fr | www.sebemex.fr | www.extramiante.fr | www.sistac-alizay.fr | www.acoustishop.fr | www.litt.fr | www.ouestventil.fr
SpaceFrog est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/06/2011, 11h43   #8
Nouveau Membre du Club
 
Benjamin
Développeur .NET
Inscription : septembre 2010
Messages : 78
Détails du profil
Informations personnelles :
Nom : Benjamin
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Développeur .NET
Secteur : Service public

Informations forums :
Inscription : septembre 2010
Messages : 78
Points : 39
Points : 39
<toussote>

J'ai pas été jusqu'au bout de ma précision, et j'ai mis le mauvais morceau de code d'indexOf ne fonctionnant pas

IndexOf ne fonctionne pas sous IE lorsqu'il est utilisé sur un tableau (d'ou l'utilisation de mon morceau de code qui surcharge la classe Array) qui est vide lors du premier passage :
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
AllCol = new Array();   
    $('table').each(        
        function()
        {                     
            var test = $(this).attr('id');
            if ( test.indexOf("GV_EtatSalaire_TB|", 0) >= 0)
            { 
               var colname = GetColName(test);
                // On regarde si le mois ne fait pas encore partie du tableau AllCol        
                if (AllCol.indexOf(colname) < 0)
                {
                    // J'ajoute un nouvelle element a mon tableau
                    AllCol.push(colname);
                    AllCol[colname] = new Array();
                }
                // J'ajoute dans mon tableau AllCol l'ID de la TextBox
                AllCol[colname].push(test);     
            }  
        }        
    );
Rhend est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/06/2011, 11h50   #9
Rédacteur/Modérateur
 
Avatar de SpaceFrog
 
Homme
Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Inscription : mars 2002
Messages : 30 019
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Royaume-Uni

Informations professionnelles :
Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Secteur : Industrie

Informations forums :
Inscription : mars 2002
Messages : 30 019
Points : 45 114
Points : 45 114
Tu sais que jquery a des possibilités de selecteurs pour ça ?

Code :
$("table[id*='GV_EtatSalaire_TB|']").
__________________
Ma page Developpez
Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
Votre post est résolu ? Alors n'oubliez pas le Tag


réalisations :www.planet-languages.com|www.saftair.com| www.ouestisol.fr | www.sebemex.fr | www.extramiante.fr | www.sistac-alizay.fr | www.acoustishop.fr | www.litt.fr | www.ouestventil.fr
SpaceFrog est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 29/06/2011, 11h58   #10
Nouveau Membre du Club
 
Benjamin
Développeur .NET
Inscription : septembre 2010
Messages : 78
Détails du profil
Informations personnelles :
Nom : Benjamin
Localisation : France, Rhône (Rhône Alpes)

Informations professionnelles :
Activité : Développeur .NET
Secteur : Service public

Informations forums :
Inscription : septembre 2010
Messages : 78
Points : 39
Points : 39
Ha non je ne savais pas et ca va m'être très pratique Je te remercie !!

Et concernant l'evenement KeyDown je suis dans une autre dimension aussi ?
Rhend est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/06/2011, 12h04   #11
Rédacteur/Modérateur
 
Avatar de SpaceFrog
 
Homme
Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Inscription : mars 2002
Messages : 30 019
Détails du profil
Informations personnelles :
Sexe : Homme
Localisation : Royaume-Uni

Informations professionnelles :
Activité : Développeur Web Php Mysql Html Javascript CSS Apache - Intégrateur - Analyste Programmeur
Secteur : Industrie

Informations forums :
Inscription : mars 2002
Messages : 30 019
Points : 45 114
Points : 45 114
regarde du coté de keypress et keycode ?
__________________
Ma page Developpez
Président du CCMPTP (Comité Contre le Mot "Problème" dans les Titres de Posts)
Deux règles du succès: 1) Ne communiquez jamais à quelqu'un tout votre savoir...
Votre post est résolu ? Alors n'oubliez pas le Tag


réalisations :www.planet-languages.com|www.saftair.com| www.ouestisol.fr | www.sebemex.fr | www.extramiante.fr | www.sistac-alizay.fr | www.acoustishop.fr | www.litt.fr | www.ouestventil.fr
SpaceFrog est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 29/06/2011, 15h39   #12
Membre Expert
 
Avatar de Watilin
 
Homme Matilin Torre
Étudiant
Inscription : juin 2010
Messages : 679
Détails du profil
Informations personnelles :
Nom : Homme Matilin Torre
Âge : 23
Localisation : France, Ille et Vilaine (Bretagne)

Informations professionnelles :
Activité : Étudiant

Informations forums :
Inscription : juin 2010
Messages : 679
Points : 1 202
Points : 1 202
Dans le bouquin sur jQuery écrit par Chaffer et Swedberg, on peut lire ceci :
Citation:
Voici une règle générale relativement fiable : si vous souhaitez connaître la touche sur laquelle l'utilisateur a appuyé, vous devez intercepter les évènements keyup ou keydown ; si vous souhaitez connaître le caractère qui sera affiché sur l'écran suite à cette action, vous devez auditer l'évènement keypress.
Pour ma part, j'utilise keydown uniquement pour les touches modificatrices (Ctrl, Alt, etc.) et c'est rare d'avoir besoin de les surveiller directement. Quand l'utilisateur enfonce une touche de son clavier assez longtemps, ça peut afficher une dizaine de caractères, et provoquer autant d'évènements keydown. C'est pas pratique à gérer.

Après, pour keyup, on joue avec la propriété keyCode ; pour keypress c'est charCode. C'est assez logique en fait. Et jQuery se débrouille pour que ça marche sous tous les navigateurs.

Un exemple concret :
Code JS :
1
2
3
$(document).keypress(function(e) {
   $('body').append(String.fromCharCode(e.charCode));
});

__________________
Disposition de clavier ergonomique française : Bépo
Watilin est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 02h17.


 
 
 
 
Partenaires

Hébergement Web