Warum ist die "thickbox" eigentlich so beliebt?
Mr. Horse
- javascript
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
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
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
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:
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
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
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