Avatar billede bumle90 Nybegynder
07. april 2002 - 22:32 Der er 17 kommentarer og
1 løsning

event objekt

Hej...jeg er i færd med at sidde og rode lidt med eventhandlers i javascript...og det virker bare absolut ikke for mig.
Jeg vil bare lave en simpel muselytter på følgende måde :


<html>
<head>
    <title>jstest</title>
<script language="JavaScript">

document.onMouseMove=function(event){

system=event.screenX;
}

</script>

</head>

<body>


</body>
</html>
Men jeg får følgende fejl : screenX er null eller ikke et objekt.
Hvad gør jeg galt ?????
Avatar billede minijensen1 Nybegynder
07. april 2002 - 22:35 #1
er det bare musekoordinaterne du vil have ..?
Avatar billede bumle90 Nybegynder
07. april 2002 - 22:36 #2
jep
Avatar billede =maddog= Nybegynder
07. april 2002 - 22:42 #3
der er forskel mellem IE og NS på det her punkt. brug event.x & event.y for IE og e.pageX og e.pageY for NS6.
desuden skal du lave
document.onmousemove i IE og window.onmousemove i NS
Avatar billede minijensen1 Nybegynder
07. april 2002 - 22:43 #4
der bruger jeg blot

  x = event.x + document.body.scrollLeft;
  y = event.y + document.body.scrollTop;

ved ikke hvorvidt det virker hos dig .. men hos mig gør det ihvertfald (IE 5.0)
Avatar billede =maddog= Nybegynder
07. april 2002 - 22:46 #5
jeg laver lige en der burde virke i NS6 også
Avatar billede =maddog= Nybegynder
07. april 2002 - 22:49 #6
ie = document.all?true:false

function trackMs(e) {
    if (ie) e = event
    mousex = (ie)?e.x:e.pageX
    mousey = (ie)?e.y:e.pageY
    document.getElementById('output').innerHTML = '<BR>'+mousex+'<BR>'+mousey+'<BR>'
}
if (ie) {
    document.onmousemove = trackMs
} else {
    window.onmousemove = trackMs
}

og et DIV
<DIV ID="output"></DIV>
Avatar billede bumle90 Nybegynder
07. april 2002 - 22:49 #7
kan du ikke prøve at poste hele koden for en eventhadler der virker i explorer 5 og 6?
Er der andre væsentlige forskelle mht. eventhandlers i IE og NS ?
Avatar billede minijensen1 Nybegynder
07. april 2002 - 22:49 #8
jeg fandt det her eksempel .. virker vist i både IE og NS ..

<html>
<head>
    <title>ghtml</title>
    <script language="javascript">
    var left;
    var top;
    function findXY(e){
        if(document.layers){
            left = e.pageX;
            top = e.pageY;
        }
        else if(document.all){
            left = window.event.x;
            top = window.event.y;
        }
        alert("x: " + left + ", y: " + top);
    }
    if(document.layers)
        document.captureEvents(Event.MOUSEDOWN);
    document.onmousedown = findXY;
    </script>
</head>

<body>



</body>
</html>
Avatar billede =maddog= Nybegynder
07. april 2002 - 22:53 #9
Der er nogle forskelle. Jeg har disse to functioner som sikrer corss compliancy, hvor det ikke er nok at lave funktions-pointers
// Compliancy functions/methods
function addEvent(elm, evType, fn, useCapture) {
  if (elm.addEventListener){
    elm.addEventListener(evType, fn, useCapture);
    return true;
  } else if (elm.attachEvent){
    var r = elm.attachEvent("on"+evType, fn);
    return r;
  } else {
    alert("Handler could not be added");
  }
}

function removeEvent(elm, evType, fn, useCapture) {
  if (elm.removeEventListener){
    elm.removeEventListener(evType, fn, useCapture);
    return true;
  } else if (elm.detachEvent){
    var r = elm.detachEvent("on"+evType, fn);
    return r;
  } else {
    alert("Handler could not be removed");
  }
}
addEventListener og removeEventListener er NS6
attachEvent og detachEvent er IE5+
Avatar billede =maddog= Nybegynder
07. april 2002 - 22:54 #10
cross compliancy!!
funktion!!
hold kæft en gang nisse engelsk
Avatar billede bumle90 Nybegynder
07. april 2002 - 22:55 #11
hvad gør det der document.layers og document.all ?
Avatar billede =maddog= Nybegynder
07. april 2002 - 22:56 #12
document.all er en IE standard og returnerer true i IE4+
document.layers er en NS standard og returnerer true i NS4 og 5
Avatar billede bumle90 Nybegynder
07. april 2002 - 22:58 #13
så det er altså for at finde ud af hvilken type browser det er?
Avatar billede =maddog= Nybegynder
07. april 2002 - 22:58 #14
lige nøjagtig
Avatar billede bumle90 Nybegynder
07. april 2002 - 23:06 #15
skal der virkelig så meget til for at adde et mouselistener?
Avatar billede =maddog= Nybegynder
07. april 2002 - 23:11 #16
tjae. sådan er livet ;-)
Avatar billede bumle90 Nybegynder
07. april 2002 - 23:16 #17
hvad er det for 3 variabler du brugert ?

evType, fn, useCapture
Avatar billede =maddog= Nybegynder
07. april 2002 - 23:20 #18
addEvent(document.body.getElementById('output'),'mousemove',trackMs,false)
altså objektet, typen, funktionen og om NS skal forsøge at capture.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester