Don P: keine leichen im keller zuruecklassen

Beitrag lesen

Hallo peterS.,

meinst Du die *defragmentierung* der [Popup]-objekt-referenz-liste, oder
ueberhaupt die verwendung einer solchen, oder deren kapselung, oder gar
den gesamtansatz?

Ja, irgendwie alles...

ich denke, mein ansatz ist einfach sehr sauber.

Es macht durchaus den Eindruck, obwohl ich Schwierigkeiten habe, alles zu durchschauen (s.u.).

auch wenn geringfuegig mehr code geschrieben werden muss, ist die art der
implementierung sehr gut nachzuvollziehen.

Naja... Was ich z.B. nicht ganz verstehe ist, dass in der .show()-Methode anscheinend alle z-Indizes auf 0 gesetzt werden, außer dem aktuellen, welches 99 wird (deine Lieblingszahl?):

Popup.prototype.show = (function (w) {/*

code*/

defragment();

popupList.forEach(function (obj/*, idx, arr*/) {

obj.pop_container.style.zIndex = 0;
  });

this.pop_container.style.zIndex = 99;
});

Der von dir oben hier weggelassene Code zeigt doch, dass die .show-Methode nicht nur anzeigen, sondern auch verstecken kann, je nach übergebenem Parameter:

var dis = (w === true) ? "block" : "none";
if (typeof this.pop_iframe === "object") {
this.pop_iframe.style.display = dis;
}
this.pop_container.style.display = dis;

Wenn wir abgesehen davon einmal annehmen, dass immer angezeigt wird (und nicht versteckt), dann leuchtet mir trotzdem nicht ein, warum hier überhaupt alle anderen zIndizes angefasst werden. Was haben denn die zIndizes der anderen Popups untereinander mit dem aktuellen PopUp zu tun? Landen die dann nicht immer wieder alle auf der gleichen Ebene, wenn doch alle zu 0 werden? Und falls ja, warum willst du sie immer dorthin zwingen? Das würde doch eine evtl. vom Benutzer eingestellte Überlappung vorhandener Popups wieder zerstören. Oder sehe ich das falsch?

egal, wie die gesamtanwendung
spaeter auch belastet wird - dieser ansatz verpflichtet sich dem ziel,
keine leichen im keller zurueckzulassen.

Das sehe ich ein. Mein beschriebener Vorschlag wäre dagegen ein bisschen "quick and dirty", weil theoretisch ein unendlich großer zIndex auftreten könnte. Allerdings kann man da auch mit wenig Aufwand eine Obergrenze definieren, ab der dann halt mal aufgeräumt wird, wenn es jemals soweit kommen sollte, dass diese Obergrenze erreicht wird. Die läge ja dann so bei 2^30 Klicks!

Auch die Sache mit dem Array und der Defragmentierung scheint mir ziemlich teuer. Arrays sind ja in JavaScript performance- und speichermäßig nicht gerade vorteilhaft implementiert...

Gruß, Don P