/ Forside / Teknologi / Udvikling / Java Scripts / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Java Scripts
#NavnPoint
molokyle 5410
Klaudi 2799
smorch 2439
kim 1360
Harlekin 1134
bentjuul 984
gibson 800
severino 695
Random 675
10  konsulent.. 626
Alternativ til offsetX
Fra : scootergrisen


Dato : 07-03-11 17:16

Jeg har noget kode her hvor musens positions hentet med offsetX.
Så der noget med at Firefox ikke bruger window.event som jeg ikke helt
forstår men i firefox bruges så istedet layerX.

Problemet er bare at layerX ligesom tilføjer den margin der er til
venstre og det betyder så at der hvor man holder musen bliver vist 30
pixels for meget til højre i firefox.
I alle de andre browsere jeg har prøvet virker det fint.

Er det kun firefox der ikke forstår window.event ?

------------------ kode -------------------------

bar.addEventListener("mousemove", function(evt) {

var offs = 0;

if (window.event) {

evt = window.event;
offs = evt.offsetX;

} else {

offs = evt.layerX;

}

}

 
 
Frank Damgaard (07-03-2011)
Kommentar
Fra : Frank Damgaard


Dato : 07-03-11 19:54

On 2011-03-07 17:16, scootergrisen wrote:
> Jeg har noget kode her hvor musens positions hentet med offsetX.
> Så der noget med at Firefox ikke bruger window.event som jeg ikke helt forstår men i
> firefox bruges så istedet layerX.
>
> Problemet er bare at layerX ligesom tilføjer den margin der er til venstre og det betyder
> så at der hvor man holder musen bliver vist 30 pixels for meget til højre i firefox.
> I alle de andre browsere jeg har prøvet virker det fint.



> Er det kun firefox der ikke forstår window.event ?

FireFox forstår DOM standarden, dvs. det hedder lidt andet og gøres
på en anden måde.

Se mere under "Events" (og sammenligning) på :
http://www.reloco.com.ar/mozilla/compat.html

...citat:...
"When Microsoft entered the scene they thought:
― In which object should this event variable be so that it's available in the code snippet?
― Let's put it in window, as everything which is in the omnipresent window object is
always in scope.
And thus the ugly window.event was born, which would come to be some kind of global variable.
This window.event, in addition to being a terrible idea, is not part of any standard
(luckily). "

......


Der er også en browsersammenligning på
http://www.quirksmode.org/dom/w3c_cssom.html
det er vist kun i IE8+IE9 der virker ordentlig med offsetX/Y ?



Birger Sørensen (07-03-2011)
Kommentar
Fra : Birger Sørensen


Dato : 07-03-11 22:17

scootergrisen formulerede spørgsmålet:
> Jeg har noget kode her hvor musens positions hentet med offsetX.
> Så der noget med at Firefox ikke bruger window.event som jeg ikke helt
> forstår men i firefox bruges så istedet layerX.
>
> Problemet er bare at layerX ligesom tilføjer den margin der er til venstre og
> det betyder så at der hvor man holder musen bliver vist 30 pixels for meget
> til højre i firefox.
> I alle de andre browsere jeg har prøvet virker det fint.
>
> Er det kun firefox der ikke forstår window.event ?
>
> ------------------ kode -------------------------
>
> bar.addEventListener("mousemove", function(evt) {
>
> var offs = 0;
>
> if (window.event) {
>
> evt = window.event;
> offs = evt.offsetX;
>
> } else {
>
> offs = evt.layerX;
>
> }
>
> }

https://developer.mozilla.org/en/DOM/event
http://msdn.microsoft.com/en-us/library/ms535863%28v=vs.85%29.aspx

clientX er den du skal bruge.
Ved ikke om den tager højde for margins og padding - men du har fået at
vide hvordan man beregner positionen, i en anden tråd.

Birger

--
http://varmeretter.dk - billig, sund og hurtig mad
http://bbsorensen.dk



scootergrisen (08-03-2011)
Kommentar
Fra : scootergrisen


Dato : 08-03-11 08:15

Hvis jeg erstatter :
offs = evt.layerX;
Med :
offs = evt.clientX;

Så bliver det bare endnu mere forkert i firefox.
Så regner den fra venstre side af browseren.

Stig Johansen (16-03-2011)
Kommentar
Fra : Stig Johansen


Dato : 16-03-11 12:01

scootergrisen wrote:

> Hvis jeg erstatter :
> offs = evt.layerX;
> Med :
> offs = evt.clientX;
>
> Så bliver det bare endnu mere forkert i firefox.
> Så regner den fra venstre side af browseren.

Jeg ved ikke om du har fået løst problemet.
Men jeg er ved at finde mine 'gamle' ting frem, og der bruger jeg pageX
(..Y).

(og noget style.offset m.v.).

Jeg har nogle ting kørende i nogle virtuelle maskiner, så jeg ikke så nemt
copy/paste på tværs af win/linux, men her er en snippet jeg bruger til ast
flytte et 'vindue' rundt med musen:

..........
function quickview_down(ev) {
var e = ev || window.event ;
if (!e.ctrlKey) return false ;
inmove = true ;

e.cancelBubble = true;
if (e.stopPropagation) e.stopPropagation();

// Now prevent any default action.
if (e.preventDefault) e.preventDefault(); // DOM Level 2
else e.returnValue = false; // IE

if(e.pageX || e.pageY){
moffsetX = e.pageX ;
moffsetY = e.pageY ;
} else {
moffsetX = e.clientX ;
moffsetY = e.clientY ;
}

qoffsetX = parseInt(qdiv_glob.style.left) ;
qoffsetY = parseInt(qdiv_glob.style.top) ;
qdiv_glob.style.cursor='-moz-grab';
return false ;



--
Med venlig hilsen
Stig Johansen

scootergrisen (18-03-2011)
Kommentar
Fra : scootergrisen


Dato : 18-03-11 14:04

> Jeg ved ikke om du har fået løst problemet.

Nej det er ikke løst endnu.
Jeg prøver den kode og ser hvordan det går.

Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408914
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste