Messieurs Dames, bonjour,

Je vous explique un petit souci que je trouve fortement étrange et (surtout) que je n'arrive pas à reproduire :

J'ai un site dont certaines listes déroulantes ont été réécrites pour les personnaliser. Une routine d'initialisation permet d'attribuer des styles aux éléments la composant (Cf. code plus bas) et c'est elle qui plante (parentNode ou parentElement non défini, alors qu'il l'est sur les autres postes...).

Mon souci :
- sur la majorité des postes, ça marche trèèèès bien.
- sur un poste, ça marche pô du tout (rien ne déroule)

J'ai bien dit poste : le symptome est indépendant du navigateur et si on se connecte au-dit poste (serveur, donc), ça plante aussi.
Le seul moyen qu'on ait trouvé pour reproduire l'erreur sur un autre poste, c'est de faire une erreur de synthaxe dans la fonction d'initialisation...

Si vous aviez la moindre idée de commencement de début de piste pour corriger ce souci, je vous en serait éternellement reconnaissant.

Merci, donc et bon WE à toutes zé tous.

Comme promis, le bout de code :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
function __initDropDown(dropdownroot, dropimage, listitems, selectedValueField, selectedTextField, postback, showOnLoad, enabled, handleClick){
//try{
    var drop = document.getElementById(dropimage);
    if (enabled == "true"){
        drop.onmouseout = function(){
            if (drop != null) {
                drop.className = "drop";
                if (drop.parentNode != null) {
                    drop.parentNode.className = "selected";
                }
            }
        }
        drop.onmouseover = function(){
            if (drop != null) {
                drop.className = "drop dropon";
                if (drop.parentNode != null) {
                    drop.parentNode.className = "selected_focus";
                }
            }
        }
        drop.onmousedown = function(){
            if (drop != null) {
                drop.className = "drop dropclic";
            }
        }
        drop.onmouseup = function(){
            if (drop != null) {
                drop.className = "drop dropon";
            }
        }
        drop.onclick = function(event){
            __showDropDown(listitems,dropdownroot,event); 
            if (drop != null) {
                if (drop.parentNode != null) {
                drop.parentNode.className = "selected_focus";}
            }
        }
        drop.onfocus = function(event){
            if (drop != null) {
                if (drop.parentNode != null) {
                drop.parentNode.className = "selected_focus";
                }
            }
        }
        drop.onblur = function(event){
            if (drop != null) {
            if (drop.parentNode != null) {
                drop.parentNode.className = "selected";
                }
            }
        }
 
    }else{
    if (drop != null) {
        drop.className = "drop dropreadonly";
        }
    }
 
    var list = document.getElementById(listitems);
    __listdropdown.push(list);
 
    if (document.getElementById(showOnLoad).value.toLowerCase() != "true"){
        list.style.display = "none";
    }else{
        document.getElementById(listitems).style.display = "";
        if (document.getElementById(dropdownroot).clientWidth == 0){
            document.getElementById(listitems).style.width= "100%" ;
        }else{
            document.getElementById(listitems).style.width= document.getElementById(dropdownroot).clientWidth + "px" ;
        }
        idDdlOpen = listitems;
    }
    document.getElementById(showOnLoad).value = "false";
 
    drop.onkeyup = function(event){
        if (event != null) {
            touche = window.event ? event.keyCode : event.which;
            if (touche == 40) { // on déroule le menu lorsque l'on capture la touche fleche bas
                __showDropDown(listitems,dropdownroot,event);
            }
        }
    }
 
    var items = list.getElementsByTagName("div");
    for (var i=0; i<items.length; i++){
        if (items[i].parentNode == list){
            if (items[i].className = "item"){
                items[i].onmouseover = function(){
                    this.className = "itemover";
                }
                items[i].onmouseout = function(){
                    this.className = "item";
                }
 
                if (handleClick.toLowerCase() == "true"){
                    items[i].onclick = function(event){
                        selectedChanged = __handledropdownclick(this, dropdownroot, selectedValueField, selectedTextField, showOnLoad, event);
                        drop.focus();
                        if (selectedChanged){
                            eval(postback);
                        }
                    }
                } else {
                    items[i].onclick = function(event){
                        __stopPropagation(event);
                    }
                }
            }else{
                items[i].onclick = function(event){
                    __stopPropagation(event);
                }
            }
        }
    }
 
    list.onclick = function(event){
        __stopPropagation(event);
    }
//    }
//catch(err)
//{} 
}