Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

setAttribute me donne du soucis

18 réponses
Avatar
ASM
salutatous,

soit une page qui, à son chargement, doit voir
certains de ses éléments recevoir les events
onClick onMouseOver onMouseOut
donnés par JS suivant ce mode :

C[i].setAttribute('onmouseover',ove,true);
C[i].setAttribute('onclick',clc,true);
C[i].setAttribute('onmouseout',frm,true);

où ove, clc et frm sont les fonctions désirées

Ça roule avec FF, Camino, Safari
Ça ne donne rien avec IE (même pas un onclick)

Le test (et son code) est ici :
http://perso.wanadoo.fr/stephane.moriaux/truc/tables_highlight_cells_fr.htm

test un peu compliqué par des changements de couleurs de fonds dont iCab
fait n'importe quoi.

On se focalisera donc sur la méthode pour faire comprendre à IE
qu'il doit avaler les events sur les cellules
(si ces onqquechose sont dans le code html des TDs,
le onclick est OK
et normal pour IE d'ignorer les onMouse)

--
Stephane Moriaux et son [moins] vieux Mac

8 réponses

1 2
Avatar
YD
YD wrote:
C[i].onclick = Function(clc);



Mais Oui !
(mon truc, fonctionnel maintenant, est en ligne à même url)

Faut que je retrouve ton(tes) post(s) où tu fais le distingo
function
Function
et le toutim à ce propos


Te fatigue pas ! Regarde plutôt la doc javascript 1.3 de NS qui
doit traîner dans un coin de disque dur chez toi !

Le problème est plutôt de IE qui attend comme valeur de l'attribut
HTML onclick, onmachin... une chaîne correspondant au code de la
fonction anonyme qui doit être exécuté à l'évènement mais qui dans
le scripting attend la fonction (et pas la chaîne de son code). Il
me semble qu'écrire setAttribute("onclick", Function(clc))
fonctionne dans IE. Après test, c'est bien ça. Tu peux remplacer ton
bout de code par :
if(document.all && !window.opera){
clc = Function(clc); ove = Function(ove); frm = Function(frm);
}
for (var i=0;i<C.length;i++) {
C[i].style.backgroundColor = cel_normale; // stylage JS de la cellule
C[i].setAttribute('onclick',clc);
C[i].setAttribute('onmouseover',ove);
C[i].setAttribute('onmouseout',frm);

// tests debugg -> pour verifier que chaque td c'est fait attribuer les events
document.getElementById('tst').innerHTML += ' C'+(i+1)*1;
}

Tes variables contenaient la chaîne :
Function(uneChaine) crée une fonction dont le corps (le texte) est
fourni par la chaîne. Reporte-toi à la doc pour les autres arguments
de Function, le passage des paramètres à la fonction.

--
Y.D.


Avatar
ASM
YD wrote:

Faut que je retrouve ton(tes) post(s) où tu fais le distingo
function
Function
et le toutim à ce propos



Te fatigue pas ! Regarde plutôt la doc javascript 1.3 de NS qui
doit traîner dans un coin de disque dur chez toi !


:-)

Ben non ... j'ai pas çà sur mon DD
et perdu l'url menant à la nvelle base de connaissances fr de NS

dans IE. Après test, c'est bien ça. Tu peux remplacer ton
bout de code par :


ha! tant mieux.

if(document.all && !window.opera){
clc = Function(clc); ove = Function(ove); frm = Function(frm);
}
for (var i=0;i<C.length;i++) {
C[i].style.backgroundColor = cel_normale;
C[i].setAttribute('onclick',clc);
C[i].setAttribute('onmouseover',ove);
C[i].setAttribute('onmouseout',frm);
// tests debugg
document.getElementById('tst').innerHTML += ' C'+(i+1)*1;
}


Est-ce que IE6 réagit à des onmouseover/out
placés dans des TDs ?


--
Stephane Moriaux et son [moins] vieux Mac


Avatar
YD

Est-ce que IE6 réagit à des onmouseover/out
placés dans des TDs ?


Oui. Le code que j'ai posté permet d'obtenir
exactement la même chose dans IE6 et FF. Et
bien sûr, je l'ai testé sur ta page récupérée.

--
Y.D.

Avatar
ASM
YD wrote:

Est-ce que IE6 réagit à des onmouseover/out
placés dans des TDs ?


Oui. Le code que j'ai posté permet d'obtenir
exactement la même chose dans IE6 et FF. Et
bien sûr, je l'ai testé sur ta page récupérée.


tu es trop super :-)

la question (bp plus basique) était :
est-ce que IE6 fait qque chose de :

<td onmouseover="this.style.backgroundColor='#ff0';"
onmouseout="this.style.backgroundColor='#fff';">

car mes IE n'en font rien de rien ... :-(

--
Stephane Moriaux et son [moins] vieux Mac


Avatar
ASM
ASM wrote:

la question (bp plus basique) était :


Ye souis oun pocito très fatigué qué yè mè mèlanze
les pinceaux ! :-(

Bien sûr que mon IE fait qquechose des onmouseqquechose !
Puisque c'est à cause de IE qu'on est obligé de se les farcir
au lieu de simplement utiliser une règle CSS !
(j'ai au moins 5 exemplaires de ce test qui finissent par me confusionner)

Est-ce que avec la béquille IE-7 les IE Windows réagissent à

td { color: blue }
td:hover { color: red }


--
Stephane Moriaux et son [moins] vieux Mac

Avatar
Etienne SOBOLE
Ye souis oun pocito très fatigué qué yè mè mèlanze
les pinceaux ! :-(
Bien sûr que mon IE fait qquechose des onmouseqquechose !
Puisque c'est à cause de IE qu'on est obligé de se les farcir
au lieu de simplement utiliser une règle CSS !
(j'ai au moins 5 exemplaires de ce test qui finissent par me confusionner)
Est-ce que avec la béquille IE-7 les IE Windows réagissent à


Tu devrais mettre une version plus a jour de ton truc en ligne, car, la, on
en est resté a la version qui merdoie ;)
Etienne

Avatar
ASM
Etienne SOBOLE wrote:

Tu devrais mettre une version plus a jour de ton truc en ligne, car, la, on
en est resté a la version qui merdoie ;)
Etienne


devrait moins merdoyer que precedent :-)

Je fais çà ce soir. à + +


--
Stephane Moriaux et son [moins] vieux Mac

Avatar
ASM
Etienne SOBOLE wrote:

Tu devrais mettre une version plus a jour de ton truc en ligne, car, la, on
en est resté a la version qui merdoie ;)
Etienne


alors voici :
- expurgée des "débuggueurs"
- fonctionnant principalement par css (donc : pas IE)
- avec une tartine de code uniquement pour IE et ses onmouseqquechose

touj à mme url
http://perso.wanadoo.fr/stephane.moriaux/truc/tables_highlight_cells_fr.htm

Si qqu'un peut me filer le JS qui permet à IE de lire la FdS
peut-être ainsi ce sera plus simple pour gérer les couleurs ?

--
Stephane Moriaux et son [moins] vieux Mac

1 2