Błąd w obsłudze :focus
Na początek krótki kod powodujący błąd
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" „http://www.w3.org/TR/html4/loose.dtd”> <html> <head> <style> body { margin:0px; padding:0px; } form { padding:0px; margin:0px; } button { width:200px; height:50px; padding:0px; margin:0px; vertical-align:top; } div { position:absolute; left:0px;top:50px; width:200px; display:none; overflow:scroll; background:white; } button:focus+div, div:active { height:200px; display:block; } </style> </head> <body> <form method="get" action="http://example.com/"> <button type="button" value="jhgj">Rozwin</button><div>Warstwa rozwijana</div><button type="submit">OK</button> </form> </body></html>
Po ustawieniu fokusu przycisku warstwa się pojawia. Błąd polega na pozostawaniu warstwy DIV po przeniesieniu skupienia na inny element (lub całkowitej likwidacji skupienia — czyli np. kliknięciu w wolnym obszarze strony).
Błąd dotyczy Opery. W Firefoksie kod pracuje prawidłowo.
Warstwa znika dopiero po usunięciu fokusu przycisku oraz najechaniu myszką na przycisk, który wcześniej posiadał fokus. Tymczasem zgodnie ze specyfikacją W3C warstwa powinna zniknąć niezwłocznie po ustąpieniu fokusu (pomijając czas renderowania).
Zmodyfikowano: 16.08.2007, 08:20