Pas de coordonnées souris avec Firefox ?

HTML5, CSS3, Javascript, support des mobiles... Que penser de votre site ? Vous manquez d'informations pour la construction d'un site qui puisse s'afficher correctement partout ? C'est un problème simple, un peu complexe ? Venez ici !
renaud63
Arias
Messages : 4
Inscription : 07 sept. 2006, 11:34

Pas de coordonnées souris avec Firefox ?

Message par renaud63 »

Bonjour à tous,

Est ce que quelqu'un sait pour quoi ces 2 fonctions destinées à calculer les coords souris par rapport à un élément (et non une page entière) puis les afficher dans 2 inputs X et Y ne veulent rien savoir avec Firefox 1.5 et sont nickel avec IE ?
Note: "layer_transp1" est l'ID de l'élèment en question

Code : Tout sélectionner

function twPositionRelativeFixe(evt) {
var nOffsetX;
var nOffsetY;
evt = (evt) ? evt : ((window.event) ? window.event : "");
if (evt) {
if (document.all) {
nOffsetX = evt.offsetX;
nOffsetY = evt.offsetY;
} 
else if (document.getElementById) {
nOffsetX = (evt.clientX - document.getElementById("layer_transp1").offsetLeft);
nOffsetY = (evt.clientY - document.getElementById("layer_transp1").offsetTop);
}
}
document.getElementById("X1").innerText = nOffsetX;
document.getElementById("Y1").innerText = nOffsetY;
//note: j'ai tenté innerHTML, c'est pas mieux sur FX mais ça plante IE
}

function twInit() {
var oImage = document.getElementById("layer_transp1")
if (oImage) {
oImage.onmousedown = twPositionRelativeFixe
}
}

Si quelqu'un voit le truc, je veux bien sa lumière. Merci.
Message envoyé avec : Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)
Avatar de l’utilisateur
pascal
Administrateur
Messages : 1515
Inscription : 28 juil. 2003, 15:13

Message par pascal »

if (document.all) {

Vu la pression du marché, document.all a été partiellement implémenté dans Firefox, donc à mon avis FF ne voit jamais le "else if", il faudrait donc tester d'une autre manière à mon avis.

Message envoyé avec : Mozilla/5.0 (X11; U; Linux i686; fr; rv:1.8.0.5) Gecko/20060731 Ubuntu/dapper-security Firefox/1.5.0.5
Mes opinions n'engagent que moi et pas mon employeur
Administrateur technique bénévole
Benoit
Administrateur
Messages : 4894
Inscription : 19 juil. 2003, 10:59

Message par Benoit »

pascal a écrit :if (document.all) {

Vu la pression du marché, document.all a été partiellement implémenté dans Firefox, donc à mon avis FF ne voit jamais le "else if", il faudrait donc tester d'une autre manière à mon avis.
Heu mais pas du tout, justement pas quand il est utilisé sans paramètre pour une soi-disant détection de navigateur.

renaud63 : est-ce que tu as essayé de parsemer ton code d'alert() ? Est-ce que l'évènement se déclenche bien, est-ce que tu entres bien dans chaque bloc if, est-ce que ça fonctionne pas mieux avec onclick plutôt que onmousedown, etc. ?

Par ailleurs, tu dis que X1 et Y1 sont des input, pourquoi ne pas utiliser value plutôt que innerText ?
♫ Li tens s'en veit, je n'ai riens fais ;
Li tens revient, je ne fais riens. ♪
renaud63
Arias
Messages : 4
Inscription : 07 sept. 2006, 11:34

Message par renaud63 »

Merci de vos réponses. Benoit, je vais essayer de mettre des alert...Quant à value, ce serait mieux accepté que innerText ? D'autant que je ne savais pas qu'on pouvait utiliser value pour "écrire" dans un élément...

Message envoyé avec : Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)
Bobe
Iguane
Messages : 742
Inscription : 28 juil. 2003, 21:29

Message par Bobe »

Code : Tout sélectionner

if( typeof(evt.offsetX) != 'undefined' ) {
    nOffsetX = evt.offsetX;
    nOffsetY = evt.offsetY;
}
else {
    // le code pour obtenir l'équivalent dans Firefox et autres navigateurs n'implémentant pas les offsetX et offsetY
}
tout simplement.
À titre informatif, offsetX et offsetY ne font pas partie du DOM du w3c. Tu as un équivalent dans les gecko-like avec layerX et layerY (tout aussi non-standard), mais seulement si la boîte concernée est en position absolue ou fixe.

innerText est spécifique à internet explorer. Utilise plutôt value, comme l’a dit benoit.
« La vie d’un geek est un combat perpétuel contre l’imperfection »
renaud63
Arias
Messages : 4
Inscription : 07 sept. 2006, 11:34

Message par renaud63 »

Merci bobe, c'est cool, ça fonctionne très bien avec IE, mais pas avec FF qui affiche (avec value) indefined....Donc quel est le else ? Et si FF n'interprète pas offsetX et Y, que dois je écrire ? :roll:

Message envoyé avec : Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)
renaud63
Arias
Messages : 4
Inscription : 07 sept. 2006, 11:34

Message par renaud63 »

:D Yeah ! merci pour ces bonnes pistes ! j'ai trouvé, il suffisait de rajouter une position relative à mon div "layer_transp1" et le tour est joué, ça fonctionne sur les 2 navigs...oufffffffffffff....

Message envoyé avec : Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322)
Répondre

Qui est en ligne ?

Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 3 invités