Mr. Horse: Warum ist die "thickbox" eigentlich so beliebt?

Hallo,

die Agentur, für die ich im Moment arbeite, wollte unbedingt so eine "thickbox" (Version mit IFRAME) haben, das Ganze natürlich angepaßt an die eigenen besonderen Ansprüche.
OK, dachte ich mir, sollte kein Problem sein, denn die auf jQuery basierende "thickbox" wird ja auf der jQuery-Website offiziell als Plug-in aufgeführt und ist mittlerweile so beliebt, daß man von einem Quasistandard-Script sprechen kann.

Die Anpassungen habe ich mittlerweile hinbekommen.

Aaaaber: zum einen finde ich in der "thickbox.js" 8 "TODO"-Kommentare. Zum anderen ist der Code zum Teil grauselig, wenig flexibel, schlecht kommentiert. Und: es wird jQuery-Logik mit "normaler" JS-Logik gemischt.
Daneben habe ich mindestens einen echten kleinen Fehler behoben (Stichwort: resize).

Da frage ich mich (ohne die Leistung und das Engagament des "thickbox"-Entwicklers herabwürdigen zu wollen!), warum dieses Script in dieser Form bei jQuery als Plug-in zu finden ist...

Nun noch eine nicht-rhetorische Frage:
Noch immer habe ich das Problem, daß bei mir der graue Hintergrund der "thickbox" leider nicht ganz bis an den unteren Rand meines Browserfensters reicht (Firefox *und* IE).
Leider haben mich auch die sehr interessanten Hinweise unter http://www.quirksmode.org/js/doctypes.html nicht weitergebracht.
Kennt Ihr dieses Problem vielleicht, wenn Ihr die "thickbox" schon einmal eingesetzt habt?
Daß am unteren Rand des Browserfensters ein schmaler Rand bleibt, der nicht von dem #TB_overlay-DIV abgedeckt wird?
Und vor allem: habt Ihr die Ursache und eine Lösung gefunden?

Mein Verdacht ist ja, daß das Problem mit der horizontalen Scrolleiste zusammenhängt, auch wenn keine angezeigt wird.

Danke!

So long,
Mr. Horse

--
No, Sir, I don't like it.
  1. Da frage ich mich (ohne die Leistung und das Engagament des "thickbox"-Entwicklers herabwürdigen zu wollen!), warum dieses Script in dieser Form bei jQuery als Plug-in zu finden ist...

    Zu dem btw zu deiner Frage im Postingtitel »Warum ist die "thickbox" eigentlich so beliebt?«: sie ist deshalb so beliebt, weil das Konzept, dass aktuelle Inhalte der Seite mit einem halbtransparenten Layer überlagert und damit zurückgenommen werden, den Fokus des Benutzers ziemlich gut auf die neuen Inhalte lenkt. Gerade für unerfahrene Nutzer ist es angenehm, wenn eindeutig gekennzeichnet ist, dass eine Aktion von ihm verlangt wird bzw wenn ihm exklusive Inhalte oder Ergebnisse einer Aktion gezeigt werden, und dabei alte Inhalte deaktiviert werden. Nur »deaktiviert« deshalb, weil ein vollständiges Ausblenden wiederum zu hakelig sein könnte und die Orientierung flöten gehen kann ("Waaaah, wo sind denn jetzt die anderen Sachen hin?").

    Aus konzeptioneller Sicht kommt hinzu, dass Layer-Inhalte wie bei einer thickbox einfach zu handhaben sind: man kann sie schlicht drüberlegen, ohne dass dafür die Seitenstruktur geändert und die Seite neugeladen werden muss.

    Viele Grüße!
    _ds

    --
    Weil ich für lange Zeit treuer Fan der Lindenstraße war, erschrecke ich mich noch heute enorm, wenn Dr. Dressler in einer anderen TV-Produktion plötzlich durchs Bild läuft. Seit ich den Mann kenne, sitzt er im Rollstuhl. Also warum lässt man ihn laufen?
    Medienrauschen, Freigang: Henne. Hahn.
    1. Hallo,

      ja, aus rein funktionaler Sicht finde ich "lightbox" und "thickbox" auch super, keine Frage.
      Aber ich wundere mich eben über die fehlende Qualitätssicherung. Wie gesagt, dieses Script wird unter http://docs.jquery.com/Plugins als offizielles Plugin aufgeführt.

      So long,
      Mr. Horse

      --
      No, Sir, I don't like it.
  2. Hallo,

    Die Anpassungen habe ich mittlerweile hinbekommen.

    Aaaaber: zum einen finde ich in der "thickbox.js" 8 "TODO"-Kommentare. Zum anderen ist der Code zum Teil grauselig, wenig flexibel, schlecht kommentiert. Und: es wird jQuery-Logik mit "normaler" JS-Logik gemischt.
    Daneben habe ich mindestens einen echten kleinen Fehler behoben (Stichwort: resize).

    Wundert mich ehrlich gesagt gar nicht.

    Man muss die ganze Library-Geschichte mal so sehen:

    • Die Entwicklung von JavaScript-Bibliotheken ist momentan eher eine Coolness-Industrie, die allein durch die enorme Nachfrage durch »Konsumenten« getrieben wird. Nach außen hin wird ein aufgeblasenes Brimbamborium veranstaltet, obwohl es nach innen hin bloß nüchterne Programmierung ist - was dann aber entsprechend in den Hintergrund tritt.
    • Ausgereift ist in dem Kontext prinzipiell mal gar nichts. Alles beginnt als Schnellschuss. Wenn man hinter die Kulissen der API schaut, findet man selten verständlichen und aufgeräumten Code.
      Wenn ich schon sehe, dass thickbox aus einem Haufen loser Funktionen besteht - da sollte der Autor einfach mal die JavaScript-Standardwerke von Heilmann, Koch und Resig (lustigerweise jQuery-Erfinder...) lesen.
    • Anpassbarkeit des Codes ist ohnehin nicht Ziel der Sache, sondern eine vielseitige API für den Anwender, die mit möglichst vielen Features klotzt. Plug & Play ist die Devise, nicht das eigenständige Weiterentwickeln des Codes. Es handelt sich um Fertigscripte, in die man besser nicht eingreifen sollte.
    • Bei der Benutzung von Frameworks wie jQuery habe ich noch nie Code von Dritten gesehen, der wirklich in der Logik des Frameworks verbleibt und dieses ausreizt. Oft fällt er systematisch aus der Logik heraus, wenn von der 60-Kilobyte-Bibliothek nur zwei gesonderte Funktion verwendet werden. Das dann Plugin zu nennen, ist eine Dreistigkeit, die aber durchaus an der Tagesordnung ist.
      jQuery und Co. sind kein JavaScript mehr, sondern erfinden eigene Sprachen. Da die meisten aber von JavaScript her denken und die Sprache des jeweiligen Frameworks nicht gut genug kennen, entstehen Pidgin-Sprachen - nicht wirklich JavaScript, nicht wirklich Framework.

    Noch immer habe ich das Problem, daß bei mir der graue Hintergrund der "thickbox" leider nicht ganz bis an den unteren Rand meines Browserfensters reicht (Firefox *und* IE).

    Darauf weiß ich ohne weiteres auch keine Antwort, hast du mal im Thickbox-Forum gesucht?
    Da hatten auch einige das Problem, z.B. http://codylindley.com/thickboxforum/comments.php?DiscussionID=330&page=1#Item_0.

    Hast du ein Dokument zur Hand, wo das Problem auftritt?

    Tritt der Fehler bei lightbox (Prototype/Scriptaculous-basiert) eigentlich auch auf? Dann könntest du mal die Funktion getPageSize() aus lightbox mit TB_overlaySize() aus thickbox vergleichen (falls die nicht identisch sind, sie sehen sich auf dem ersten Blick ziemlich ähnlich):
    http://www.huddletogether.com/projects/lightbox2/js/lightbox.js

    Mathias

    1. Hi,

      • Ausgereift ist in dem Kontext prinzipiell mal gar nichts. Alles beginnt als Schnellschuss. Wenn man hinter die Kulissen der API schaut, findet man selten verständlichen und aufgeräumten Code.

      Ach, Du weißt doch: Der Code ist willig, doch das Fleisch ist schwach. >8-)

      Oder heißt es: Das Fleisch ist billig, und der Code ist schwach? >:->

      Ich verwechsel das immer ... ;-))

      Gruß, Cybaer

      --
      Hinweis an Fragesteller: Fremde haben ihre Freizeit geopfert, um Dir zu helfen. Helfe Du auch im Archiv Suchenden: Beende deinen Thread mit einem "Hat geholfen" oder "Hat nicht geholfen"!
    2. Hi Mathias,

      danke für Deine ausführliche Antwort.
      Ich kann Dir in den meisten (allen?) Punkten nur beipflichten.

      Es gibt ja auch von Peter-Paul Koch (quirksmode.org) einige sehr kluge und kritische Ausführungen zu Sinn und Unsinn von Bibliotheken für Javascript.

      Von den generellen Problemen abgesehen, konnte ich die konkreten Schwierigkeiten nun lösen, indem ich die "thickbox" sehr massiv umgeschrieben und verschlankt habe.

      Unter anderem verwende ich nun für die gesamte Dimensionierungs- und Positionierungslogik das ja bereits verfügbare und gute jQuery-"Plugin" "Dimensions" (denn mir leuchtet nicht ein, warum jedes "Plugin" alle Räder jedesmal neu erfinden muß und so User und Browser mit überflüssigem Code quält).

      Damit sieht die Funktion TB_getPageSize() nun sehr einfach aus:
      function TB_getPageSize() {
       // here we use the jQuery plugin "dimensions"
       var w = $(document).innerWidth();

      var hDoc = $(document).innerHeight();
       var hWin = $(window).innerHeight();
       var h = (hDoc > hWin)? hDoc : hWin;

      arrayPageSize = new Array(w,h)
       return arrayPageSize;
      }

      Ich werde mich auch mal mit dem "thickbox"-Macher in Verbindung setzen. Vielleicht findet er ja einige meiner Anregungen und Änderungen nützlich.

      So long,
      Mr. Horse

      --
      No, Sir, I don't like it.