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; }