![]() |
SELFHTML Forumsarchiv |
|
|
Die folgende Nachricht zum Thema stammt von: Schuer, 04. 09. 2005, 18:57
Hallo,
ich habe hier einen Opera-Bug vorliegen, den ich nicht nachvollziehen kann. Auf der Testseite zu sehen: http://www.fb07.de/temp/opera.html
Es geht darum, eine Tabellenzeile durch Änderung der CSS-Klasse per JS einzufärben, wenn die Checkbox davor aktiviert wird. Vorbild war Mudguards Artikel Dynamisches HTML: Datensatzauswahl aus Tabelle mit Fullrowselect, der allerdings das Label-Element für die Darstellung von Inhalten verwendet, und bei dem der Fehler im Opera nicht auftaucht.
Habt ihr eine Idee, wie ich den Fehler vermeiden/umgehen könnte?
Viele Grüße!
_ds
--
»Falling in love with CSS«
Die folgende Nachricht zum Thema stammt von: Schuer, 04. 09. 2005, 19:04
»» Auf der Testseite zu sehen: http://www.fb07.de/temp/opera.html
Kleiner Nachtrag zur Problembeschreibung: Die Zeile wird ja eingefärbt, allerdings nicht vollständig, sondern nur unterhalb des Textes. Schiebt man das Browserfenster kurz aus dem Bild oder aktiviert wahllos einige andere Zeilen, wird die Darstellung korrigiert und das gewünschte Ergebnis erreicht.
Sehr eigenartig, und wie gesagt: Mudguards Version im verlinkten Artikel ist davon nicht betroffen.
Viele Grüße!
_ds
--
medienrauschen, das Medienweblog.
Die folgende Nachricht zum Thema stammt von: MudGuard, 04. 09. 2005, 19:22
Hi,
»» »» Auf der Testseite zu sehen: http://www.fb07.de/temp/opera.html
»» Kleiner Nachtrag zur Problembeschreibung: Die Zeile wird ja eingefärbt, allerdings nicht vollständig, sondern nur unterhalb des Textes. Schiebt man das Browserfenster kurz aus dem Bild oder aktiviert wahllos einige andere Zeilen, wird die Darstellung korrigiert und das gewünschte Ergebnis erreicht.
Kann ich in 7.53 und 8.00 nachvollziehen.
Opera braucht manchmal den expliziten Hinweis, daß neu gemalt werden soll.
Probier mal, die Zeile per display:none aus- und sofort wieder einzublenden (bei meinen Problemen hatte visibility nicht ausgereicht).
(um ein Flackern in anderen Browsern zu vermeiden, ggf. mit if (window.opera) nur für Operas anwenden).
»» Sehr eigenartig, und wie gesagt: Mudguards Version im verlinkten Artikel ist davon nicht betroffen.
WTF is Mudguard? I am MudGuard, not Mudguard ;-)
cu,
Andreas
--
Warum nennt sich Andreas hier MudGuard?
Schreinerei Waechter
Fachfragen per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
Die folgende Nachricht zum Thema stammt von: Ludger, 04. 09. 2005, 19:31
Hi,
»» WTF is Mudguard? I am MudGuard, not Mudguard ;-)
ein ganz faszinierender Handle, auf den man in der Tat stolz sein darf.
Gruss,
Ludger
Die folgende Nachricht zum Thema stammt von: Schuer, 04. 09. 2005, 19:38
»» WTF is Mudguard? I am MudGuard, not Mudguard ;-)
Entschuldige! ;-) Und danke vielmals auch für deine Hilfe.
Viele Grüße!
_ds
--
medienrauschen, das Medienweblog.
Die folgende Nachricht zum Thema stammt von: wahsaga, 04. 09. 2005, 19:21
hi,
»» ich habe hier einen Opera-Bug vorliegen, den ich nicht nachvollziehen kann.
Problem nachvollziehbar - und in anderem Rahmen auch schon öfters selber erfahren.
Opera "vergisst" gerne, alle betroffenen Teile eines Dokumentes neu zu rendern, wenn eine dynamische Style-Änderung per Javascript stattfindet.
»» Habt ihr eine Idee, wie ich den Fehler vermeiden/umgehen könnte?
Bring ihn dazu, etwas gründlicher darüber nachzudenken, welche Teile er neu zu rendern hat.
Füge mal in deine Funktion highlight() vor dem return noch die Zeile
document.body.style.backgroundColor = '#FFFFFF';
ein - und staune: Obwohl du dem body nur die Hintergrundfarbe zugewiesen hast, die er eh schon hatte, ist der Bug-Effekt verschwunden.
Ist natürlich etwas unschön, weil du jetzt die Hintergrundfarbe, die body per Stylesheet bekommen hat, nochmal hart kodiert im JS stehen hast - und das also logischerweise bei Änderung des CSS auch hier eine Anpassung erfordern würde.
Weitere Möglichkeit, um das zu umgehen: Nicht body, sondern html eine Hintergrundfarbe zuweisen - beispielsweise transparent, um weniger Unverträglichkeiten zu haben:
document.body.parentNode.style.backgroundColor = 'transparent';
löst das Problem ebenfalls. Ist vielleicht etwas besser zu handhaben - weil wie oft vergibt man in Stylesheets eine Hintergrundfarbe für html? Kommt bei mir jedenfalls so gut wie nie vor - also kann ich sie in solchen Fällen auch problemlos per JS auf transparent setzen.
Das ist grundsätzlich die Methode, die ich in solchen Fällen immer anwende: Opera checkt's nicht gleich, also ziehe ich ihm kurz einen mit dem Zaunpfahl über, als kleinen Denkanstoss ...
gruß,
wahsaga
--
/voodoo.css:
#GeorgeWBush { position:absolute; bottom:-6ft; }
Die folgende Nachricht zum Thema stammt von: Jeena Paradies, 04. 09. 2005, 19:26
Hallo,
»» document.body.parentNode.style.backgroundColor = 'transparent';
Ah sehr cool, dieses Problem hat mir auch schon einige Kopfzerbrechen bereitet, vor allem in einem Administrationsmenü, welches _nur_ im Opera verwendet wird ist das ziemlich uncool. Danke für die Lösung.
Grüße
Jeena Paradies
--
Bloggen und so | Jlog | Gourmetica Mentiri
Die folgende Nachricht zum Thema stammt von: Schuer, 04. 09. 2005, 19:37
»» document.body.parentNode.style.backgroundColor = 'transparent';
Ganz großes Tennis! 1000 Dank für die tolle Hilfe :-)
Viele Grüße!
_ds
--
»Webstandards«
Die folgende Nachricht zum Thema stammt von: MudGuard, 04. 09. 2005, 19:39
Hi,
»» Weitere Möglichkeit, um das zu umgehen: Nicht body, sondern html eine Hintergrundfarbe zuweisen - beispielsweise transparent, um weniger Unverträglichkeiten zu haben:
»» document.body.parentNode.style.backgroundColor = 'transparent';
Ah ja, das werde ich mal mit meinem Opera-Problemfall probieren (ich hatte damals die Tabelle aus- und wieder eingeblendet).
cu,
Andreas
--
Warum nennt sich Andreas hier MudGuard?
Schreinerei Waechter
Fachfragen per E-Mail halte ich für unverschämt und werde entsprechende E-Mails nicht beantworten. Für Fachfragen ist das Forum da.
Die folgende Nachricht zum Thema stammt von: Avalon, 05. 09. 2005, 12:59
»» document.body.parentNode.style.backgroundColor = 'transparent';
Warum so umständlich? Versteht Opera
document.documentElement.style.backgroundColor = "transparent";
nicht?
Gruß
Avalon
Die folgende Nachricht zum Thema stammt von: Ashura, 05. 09. 2005, 16:54
Hallo Avalon.
»» »» document.body.parentNode.style.backgroundColor = 'transparent';
»»
»» Warum so umständlich? Versteht Opera
»»
»» document.documentElement.style.backgroundColor = "transparent";
»»
»» nicht?
Doch, er versteht es.
Einen schönen Montag noch.
Gruß, Ashura
--
Selfcode: sh:( fo:} ch:? rl:( br: n4:~ ie:{ mo:| va:) de:> zu:) fl:( ss:) ls:[ js:|
30 Days to becoming an Opera8 Lover -- Opera Mini on Treo
Meine Browser: Opera 8.02 | Firefox 1.0.6 | Lynx 2.8.5 | Netscape 4.7 | IE 6.0
[Deshalb frei! - Argumente pro freie Software]
Die folgende Nachricht zum Thema stammt von: wahsaga, 06. 09. 2005, 20:05
hi,
»» Warum so umständlich?
weil das nur so kurz dahergeschrieben war, um dem problem, eine hintergrundfarbe für body anzugeben, die dann passend zum CSS sein müsste, zum umgehen.
»» Versteht Opera
»» document.documentElement.style.backgroundColor = "transparent";
»» nicht?
doch, klar. viele wege führen nach norwegen.
gruß,
wahsaga
--
/voodoo.css:
#GeorgeWBush { position:absolute; bottom:-6ft; }
© 1998-2006
Impressum, Software: Classic Forum