2011-06-22 6 views
2

Je dois trouver la position d'un événement (passer la souris sur un bouton), pour l'extension fire fox. J'utiliseTrouver la position d'un événement (passer la souris sur un bouton), pour l'extension fire fox

var obj = $mb(e.target,doc).offset(); 
var left = obj.left; 
var top = obj.top; 

Mais le problème est la valeur retournée par c'est la position d'un événement dans l'écran non de la page, qui est qu'il ne faut pas faire défiler la position en considération {dans fire fox } .. (mais dans Google Chrome son fonctionnement).

Puis j'ai utilisé la position de la souris.

var obj_left = (window.Event) ? e.pageX : event.clientX + (document.documentElement.scrollLeft ? document.documentElement.scrollLeft : document.body.scrollLeft); 

Mais le problème est-il retourne des valeurs différentes en fonction de la position de la souris qui provoquent l'événement (des valeurs différentes pour même bouton aux deux extrémités du bouton), mais dans le premier cas, même si elle retourne la position de l'écran, il retourne une seule valeur pour l'événement (une seule valeur pour un bouton aux deux extrémités).

ce que j'ai besoin est la valeur de retour doit être identique pour l'événement et doit prendre en compte la position défiler

Répondre

1

Les événements de souris dans Firefox ont à la fois un pageX et une propriété clientX (voir la documentation respectivement à https://developer.mozilla.org/en/DOM/event.pageX et https://developer.mozilla.org/en/DOM/event.clientX). Il semble que pageX est ce que vous voulez - position par rapport à la page actuelle, indépendamment du défilement. pageX est non-standard et probablement pas implémenté dans Chrome, mais jQuery semble fournir cette propriété de manière cross-browser, voir http://api.jquery.com/event.pageX/.

+0

pageX est bon, mais il renvoie des valeurs différentes en fonction de la position de la souris qui provoquent un événement sur le même bouton .. Est-il possible de renvoyer une seule valeur comme position de décalage – KAS

+0

@KAS: Donc vous voulez réellement un élément position, pas la position du pointeur de la souris? 'getBoundingClientRect()' fera, voir https://developer.mozilla.org/En/DOM/Element.getBoundingClientRect. –

Questions connexes