O: Brak sprawdzenia zdarzenia :hover przy wystąpieniu :active (na innej warstwie)

Błąd dotyczy wersji Opery: 9.20 (nr #273010 w BTS Opery)

Na początek krótki fragment kodu generujący błąd definiujący 3 warstwy:

  #w1,#w2
  {
    position:absolute;
    top:0px;
    left:0px;
    width:200px;
    background:red;
    height:100px;
  }

  #w2
  {
    display:none;
    width:200px;
    background:green;
  }

  #w1:active #w2, #w2:hover
  {
    display:block;
    height:300px;
  }

  <div id="w1">
    <div id="w2"></div>
  </div>

W Firefoksie 1.5, Explorerze (po dopisaniu niezbędnych skryptów), innych przeglądarkach na silniku Gecko wszystko działa poprawnie. W Operze po kliknięciu warstwy czerwonej myszką poprawnie zostaje rozwinięta zielona warstwa. Po puszczeniu klawisza warstwa zielona błędnie znika (przecież jest nad nią kursor). Aby podkreślić błąd dodam, że lekkie ruszenie myszy (nawet o 1px) przy wciśniętym klawiszu myszki zapobiegnie zniknięciu warstwy.

Innym błędem jest utrata fokusu przez przycisk, po kliknięciu scrollbara w warstwie stanowiącej następnik.

To chyba nie błąd — kliknięcie przecież ma prawo przenieść focus, szczególnie jak oczekujesz aktywowania innego elementu

Powoduje to niemożność korzystania z :focus + :active w celu skonstruowania imitacji pola select, w którym można by wyświetlać drzewko lub listę obrazków (beż użycia skryptów).

Oczywiście w Firefoksie fokus nie niknie po kliknięciu scrollbara, zaś niknie po kliknięciu warstwy (co uważam za prawidłowe).

Fokus w operze nie niknie podczas przewijania kolejnej warstwy (w moim html był błąd — błąd deklaracji standardu i włączał się tryb quirks).


Spis bugów


Zmodyfikowano: 16.08.2007, 08:21