Autor |
Beitrag |
Yogu
      
Beiträge: 2598
Erhaltene Danke: 156
Ubuntu 13.04, Win 7
C# (VS 2013)
|
Verfasst: Do 08.07.10 20:21
Hallo,
ich habe gerade einen kleinen, relativ unwichtigen Fehler in der Beitragssuche gefunden (sonst tolle Neuerungen  ). Und zwar werden Bilder, zumindest eingebettete Anhänge, einfach abgeschnitten, ohne dass ein "Weiterlesen"-Link erscheint.
Beobachtet hab ich das in der Beitragssuche von Narses. Der Post im Thema Endlich! Die CD, auf die wir schon so lange gewartet haben! enthält nur ein Bild und ein Smiley, und wird daher vom Server offenbar für nicht höher als 100 Pixel eingestuft.
Der Fehler ist klein, allerdings doch etwas nervig, da man die Suchergebnisse nun verlassen muss, um das Bild komplett anzusehen.
Grüße,
Yogu
Für diesen Beitrag haben gedankt: Christian S., Hidden
|
|
Heiko
      
Beiträge: 3169
Erhaltene Danke: 11
|
Verfasst: Do 08.07.10 21:28
Also bei mir ist er da vorhanden *grübel*
Einloggen, um Attachments anzusehen!
|
|
Christian S.
      
Beiträge: 20451
Erhaltene Danke: 2264
Win 10
C# (VS 2019)
|
Verfasst: Do 08.07.10 21:33
Bei mir in Chrome sehe ich ihn auch nicht. Chrome zeigt Bilder, die noch geladen werden müssen, erst an, wenn der Rest der Seite schon zu sehen ist. Im FF ist das (gerade getestet) auch so. Ist das in Opera anders?
Eventuell wird daher in Chrome und FF die Höhe falsch bestimmt *spekulier* Dann müsste ich sehen, dass ich mir einen anderen Zeitpunkt suche, um die Links anzuzeigen, nämlich wenn das Bild fertig geladen hat.
_________________ Zwei Worte werden Dir im Leben viele Türen öffnen - "ziehen" und "drücken".
|
|
Heiko
      
Beiträge: 3169
Erhaltene Danke: 11
|
Verfasst: Do 08.07.10 21:40
Christian S. hat folgendes geschrieben : | Eventuell wird daher in Chrome und FF die Höhe falsch bestimmt *spekulier* Dann müsste ich sehen, dass ich mir einen anderen Zeitpunkt suche, um die Links anzuzeigen, nämlich wenn das Bild fertig geladen hat. |
Ich vermute mal, du machst es aktuell wenn der DOM ready ist, oder? Wenn ja: Bis dahin müssen die Bilder noch nicht geladen sein. Von daher kann der Fehler auftreten. Du könntest jetzt das Event abgreifen das kommt, wenn alles fertig geladen wird. Aber auf einer langsamen Leitung dürfte das stören, da man den Rest nicht verwenden kann, bevor die Bilder fertig sind. Von daher müsstest du ein zweistufiges System bauen. Beim DOMReady-Event die ersten Weiterlesen-Links hinzufügen und beim zweiten Event dann die restlichen Überprüfen, ob die evtl. doch noch einen Link brauchen. - Oder du nutzt statt Weiterlesen... einen automatischen Scrollbalken, dann ist es Sache des Browsers 
|
|
Yogu 
      
Beiträge: 2598
Erhaltene Danke: 156
Ubuntu 13.04, Win 7
C# (VS 2013)
|
Verfasst: Do 08.07.10 21:52
Heiko hat folgendes geschrieben : | Ich vermute mal, du machst es aktuell wenn der DOM ready ist, oder? |
Die Abfrage findet jeweils statt, wenn ein Post geladen wurde, sie ist in HTML integriert.
Abhilfe verschaffen könnten vielleicht die width- und height-Attribute. Wenn die Ausmaße aller Bilder dem Parser bekannt wäre, könnte er diese Attribute setzen, und auch Firefox und Chrome hätten sofort einen Platzhalter der richtigen Größe.
Heiko hat folgendes geschrieben : | Du könntest jetzt das Event abgreifen das kommt, wenn alles fertig geladen wird. |
Alternativ wäre auch das onload-Ereignis der Bilder möglich. Das wird dann ausgelöst, wenn das Bild vollständig geladen ist. In der Funktion showExpander könnten erst alle Bilder mit Event-Handlern ausgestattet werden, die einen Zähler rückwärtszählen und bei Null die Höhe prüfen. So wäre keine Anpassung des Parses nötig und der Inhalt müsste nicht komplett geladen sein, bevor die Links ausgeblendet werden.
Hier ein ungetesteter Code:
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48: 49: 50: 51:
| function showExpander(id) { var postBody = document.getElementById('postBody'+id); var expander = document.getElementById('expander'+id); if (postBody && expander) { var counter = 0; var ready = false; function crawl(node) { if (node.nodeName.toLower() == 'img') { counter++; node.onload = function() { var func = function() { if (!ready) { setTimeout(func, 100); return; } counter--; if (counter == 0) doShowExpander(id); } func(); } } for (var i = 0; i < node.childNodes.length; i++) { crawl(node.childNodes[i]); } } if (counter == 0) doShowExpander(id); ready = true; } }
function doShowExpander(id) { if (postBody.scrollHeight > 100) { if(postBody.scrollHeight < 110) postBody.style.maxHeight = ""; else expander.style.display = ""; } } |
|
|
UGrohne
      

Beiträge: 5502
Erhaltene Danke: 220
Windows 8 , Server 2012
D7 Pro, VS.NET 2012 (C#)
|
Verfasst: So 11.07.10 20:12
Ich hab das nicht nur bei den Bildern, sondern auch bei anderen Beiträgen gerade gesehen. Hab mir dann mal mit Firebug das Ganze angeschaut und festgestellt, dass das Weiterlesen-Div über das Display:none-Attribute versteckt ist. Wenn man das Attribut entfernt, wird der Link eingeblendet, an der Höhe kanns also nicht liegen.
|
|
Yogu 
      
Beiträge: 2598
Erhaltene Danke: 156
Ubuntu 13.04, Win 7
C# (VS 2013)
|
Verfasst: Mo 12.07.10 00:07
|
|
UGrohne
      

Beiträge: 5502
Erhaltene Danke: 220
Windows 8 , Server 2012
D7 Pro, VS.NET 2012 (C#)
|
Verfasst: Mo 12.07.10 08:34
|
|
Chiller_No.1
      
Beiträge: 62
Erhaltene Danke: 6
Win 7, Win XP, Win Vista
C++, C#, HTML
|
Verfasst: Mo 12.07.10 14:55
Ich hab mir grad mal einen Beitrag angesehen der "bedankt" wurde und da trat das Problem auch auf das der Beitrag einfach abgeschnitten wird. Wusste jetzt nicht ob das auch schon bekannt war
mfg chiller
_________________ L_ This is Schäuble. Copy Schäuble into your signature to help him on his
OL own way to Überwachungsstaat.
|
|
|