OVH Cloud OVH Cloud

click semble être une propriété réservée par IE

1 réponse
Avatar
Laurent Vilday
Bonjour,

Je viens de m'apercevoir qu'on ne pouvait pas créer une fonction
"click()" sous IE6 (enfin on peut la créer mais il semblerait qu'on ne
puisse pas s'en servir parce que IE6 la surcharge avec sa propre
fonction bien étrange)

1) <div onclick="alert(click);">(click)</div>
2) <div onclick="alert(this.click);">(click)</div>
3) <div onmouseup="alert(this.click);">(up)</div>
4) <div onmousedown="alert(this.click);">(down)</div>

Avec les 4 lignes précédentes, sans rien d'autre dans la page je
m'attendais à obtenir :

1) ERR: click is not defined
2-3-4) alert 'undefined'

C'est ce qui se passe avec FX et Opéra, mais avec IE6 j'obtiens *toujours* :

function click() {
[native code]
}

Puisque le (1) me retourne une fonction j'en déduis qu'elle se trouve
dans le scope global donc probablement dans l'objet window. Et pourtant,
je n'arrive pas à la trouver quand j'énumère les propriétés de l'objet
window. Donc elle doit certainement être ailleurs, mais pourquoi et où ?

for (var k in window)
{
alert(k + '=' + window[k]);
}

Est-ce que quelqu'un connais une explication sur le pourquoi du comment
de ce comportement (encore et toujours) spécifique à IE ? ou me diriger
vers une ressource certainement très profondément cachée dans les
méandes du MSDN ?
Est-ce que vous connaissez d'autres mots réservés (en fourbe) par IE ?
Question spéciale Sébastien :) , est-ce que IE mac à le même comportement ?

http://mokhet.com/tests/IE_click.html

merci.

--
laurent

1 réponse

Avatar
ASM
Bonjour,


Bonjour,

mais avec IE6 j'obtiens
*toujours* :

function click() {
[native code]
}


Quand on voit que IE est content (en CSS par exemple) avec :
.truc { width = 100 }
.truc { width0 }
.truc { width: 100 }
.truc { width: 100px }
et que
.truc { font weight: bold }
lui va aussi bien que
.truc { font-weight: bold }
.truc { font-weight= bold }

faut-il s'étonner qu'il se mélange aussi
les pinceaux avec les mots réservés du JS ?


Puisque le (1) me retourne une fonction j'en déduis qu'elle se trouve
dans le scope global donc probablement dans l'objet window.


moi, j'aurais essayé çà pour voir ce qu'il en fait
(d'ou vient ce click et à quoi il est affecté)

<div onmouseover="alert('vu');click;"
onclick="alert('click = '+click);">(over) alert</div>
<div onmouseover="this.click"
onclick="alert('click = '+click);">(over) this.click</div>
<div onmouseover="this.click()"
onclick="alert('click = '+click);">(over) this.click()</div>

où on voit que ce phénomène est uniquement déclanché par
les clics souris
puisque le mouseover ne réagit
que s'il contient la fonction click() pour lancer onclick

Est-ce que vous connaissez d'autres mots réservés (en fourbe) par IE ?


il semblerait que çà marche avec tous :

<div onclick="alert(open);">clic (open)</div>

Ha ? tiens ? FF aussi se manifeste avec çà ... !
alors ... pourquoi pas avec click ?

même comme çà on n'a pas d'alert avec FF :
<div onclick="alert('vu : '+click);">vu (click)</div>

Question spéciale Sébastien :) , est-ce que IE mac à le même comportement ?


Oui !

Au final, serait-ce un bug FF ?

http://mokhet.com/tests/IE_click.html




--
Stephane Moriaux et son [moins] vieux Mac