Andreas: Maus-Cursor nur im DIV

Hallo,

momentan zeichnet Javascript alle Mausbewegungen meiner Seite auf indem es die Position mouseX,mouseY aktualisiert.

Hierfür verwende ich diesen Code:
//find out if ie runs in quirks mode
var docEl = (
typeof document.compatMode != "undefined" &&
document.compatMode        != "BackCompat"
)? "documentElement" : "body";
// register event
// capture it for nc 4x
//
function init_mousemove() {
if(document.layers) document.captureEvents(Event.MOUSEMOVE);
document.onmousemove = dpl_mouse_pos;
document.onmouseup =function (){box2followthemouse='';};
}
// handle onmousemove event
//
function dpl_mouse_pos(e)
{
// position where mousemove fired
var xPos    =  e? e.pageX : window.event.x;
var yPos    =  e? e.pageY : window.event.y;
// for ie add scroll position
if (document.all && !document.captureEvents) {
xPos    += document[docEl].scrollLeft;
yPos    += document[docEl].scrollTop;
}
// display position
mouseX=xPos;
mouseY=yPos;
if(box2followthemouse!='')
attach2mouse(document.getElementById(box2followthemouse))
// for the dino pass event
if (document.layers) routeEvent(e);
}

Nun würde ich aber gerne die mitgeschriebene Mausaktivität einschränken, sodass nur die Positionen aktualisiert werden, wenn sich die Maus über einem bestimmten DIV befindet und nicht beim ganzen <Body>.

Bitte um Tipps

  1. Hi!

    Bitte um Tipps

    Du bist gerade mit einem toten Patienten,[1] welcher nach dem Exitus geteert, gefedert und danach erdrosselt wurde in der Abteilung für Geburtshilfe hiesigen Spitals[2] gelandet.
    Dann hast Du die Leiche der erstbesten Hebamme vor die Füsse geworfen.

    Was erwartest Du nun?

    off:PP

    [1] Der von Dir gepostete Code
    [2] Dieses Wort ist eine Erblast

    --
    "You know that place between sleep and awake, the place where you can still remember dreaming?" (Tinkerbell)
  2. Hallo,

    Du kannst dich dieser Event-Eigenschaften bedienen:
    http://de.selfhtml.org/javascript/objekte/event.htm#offset_x_y@title=offsetX/Y (Browser außer Gecko)
    http://de.selfhtml.org/javascript/objekte/event.htm#layer_x_y@title=layerX/Y (nur für Gecko nötig, zusätzlich position:absolute oder position:relative)

    Durch eine Fähigkeiten-Abfrage kannst du ein browserübergreifendes Script erstellen.

    Mathias

    1. Durch eine Fähigkeiten-Abfrage kannst du ein browserübergreifendes Script erstellen.

      Den Teil hab ich doch schon.
      Momentan ist es allerdings für das gesamte Dokument festgelegt, dass das Event aktiv ist. Nun würde ich es gerne auf einen bestimmten DIV beschränken.
      Das allein wär auch noch kein Problem, ABER: wie stellt man es an, dass das Script auch aktiv wird, wenn ein DIV auf dem "bestimmten DIV" befindlich ist und auf diese innere Box jemand klickt?

      1. Hallo,

        wie stellt man es an, dass das Script auch aktiv wird, wenn ein DIV auf dem "bestimmten DIV" befindlich ist

        Was bedeutet das? Ich verstehe den Satz nicht.

        und auf diese innere Box jemand klickt?

        Wenn zwei Elemente verschachtelt sind, ist es für das äußere Element kein Problem, auch Events zu behandeln, die beim inneren Element passieren. Events steigen nämlich im Elementenbaum auf, das nennt sich Bubbling. Es reicht dann, ein Ereignis beim äußeren Element zu überwachen.

        Wenn das eine div-Element nur layoutmäßig über dem anderen liegt (z.B. durch absolute Positionierung), aber die Elemente nicht verschachtelt sind, dann wird es viel schwieriger. Das kann ich dir gerne beschreiben, allerdings habe ich dein Problem noch nicht ganz verstanden, deshalb weiß ich nicht, ob du das überhaupt suchst.

        Mathias

  3. Nun würde ich aber gerne die mitgeschriebene Mausaktivität einschränken, sodass nur die Positionen aktualisiert werden, wenn sich die Maus über einem bestimmten DIV befindet und nicht beim ganzen <Body>.

    du kannst den onmousemove Event auch jedem beliebigen Event zuweisen oder über die Eigenschaft target resp. srcElement des Event Objektes, ermitteln wo der Event stattgefunden hat.

    Struppi.