Felix Riesterer: div an Mauskoordinaten ausrichten bei position:relative für body

Beitrag lesen

Lieber molily,

Willst du das wirklich ohne jQuery machen?

ja, denn jQuery hat mich exact in solchen Fällen in der Vergangen regelmäßig sitzen lassen.

Gibt es einen Grund, warum du Low-Level arbeitest (sogar mit DOM-0-Event-Handling)?

Einfachheit des Codes in einer Weise, dass ich alle Aspekte selbst überblicke. Dieses jQuery mag ja mittlerweile Standard geworden sein, jedoch benötige ich seine Fähigkeiten nur marginal und kann vieles, das jQuery vielleicht einfacher machen könnte, mit kleinen Funktionen selbst nachbilden. Auf jQuery-Komfort muss ich deshalb nur wenig verzichten und habe dadurch alles selbst in der Hand.

Man könnte mir jetzt vorwerfen, dass ich an dem "not invented here"-Syndrom leide oder zumindest gegen dieses Paradigma verstoße, jedoch werden wir gleich sehen, dass jQuery eben keine Lösung für mein Problem bieten kann.

Dieses DOM-0-Event-Handling ist für mich einfacher handzuhaben, da ich in den Umgebungen, in denen ich Eventhandling benötige, jeweils nur einen Handler einsetzen muss. Das fortgeschrittenere Event-Handling, bei dem ich mehrere Listener an ein Event binden kann, verkompliziert meine Anwendungsfälle anscheinend nur.

Programmierst du für alte IEs?

Nein, jedenfalls nicht absichtlich. Vielleicht habe ich nur aus älteren Projekten meine Code-Schnipsel neu organisiert, sodass ältere Browser (zumindest teilweise) mit unterstützt würden...

Wenn du jQuery nicht verwenden willst, kannst du dich durch die Untiefen von jQuery wühlen, um dich in die Offset-Problematik einzuarbeiten:

2.x-Branch (neuere Browser): https://github.com/jquery/jquery/blob/master/src/offset.js
1.x-Branch (oldIE-Unterstützung): https://github.com/jquery/jquery/blob/1.x-master/src/offset.js

Meine Tests haben ergeben, dass jQuery das problem in meinem Beispiel nicht lösen kann.

Vom Ablauf her:

Der ist in meinem Beispiel im Prinzip genau so, wenn auch gerade anders herum, gelöst: Ich klettere den Baum bis zu <body> hinauf, indem ich immer wieder offset.Parent als Knoten "nach oben" verwende, um dann dessen Eigenschaften offsetTop und offsetLeft von meinen Koordinaten (initialisiert mit scrollTop und scrollLeft) abzuziehen.

Das sind in jQuery vielleicht vier Zeilen, ohne jQueryist das eine Menge Code, wenn man es richtig und für alte Browser machen will.

Deine Beispiel-Links führen unter einem aktuellen FireFox unter Linux nicht zu dem von mir gewünschten Verhalten, sondern im Gegenteil zu dem von mir als Problemstellung bereits dokumentierten. Aber darauf gehe ich in Deinem zweiten Posting genauer ein.

Liebe Grüße,

Felix Riesterer.

--
"Wäre die EU ein Staat, der die Aufnahme in die EU beantragen würde, müsste der Antrag zurückgewiesen werden - aus Mangel an demokratischer Substanz." (Martin Schulz, Präsident des EU-Parlamentes)