[HTML] Atrybut onmouseover a Iframe

Forum przeznaczone dla wszystkich webmasterów, chcących tworzyć strony www zgodnie ze standardami World Wide Web Consortium.
adax2000
Nowy
Nowy
Posty: 31
Rejestracja: ndz kwie 24, 2005 10:11 pm

[HTML] Atrybut onmouseover a Iframe

Post autor: adax2000 »

robiłem taką stronę (http://www.ptc.gda.pl) na której rozwijane menu nachodzi nad iframe i teraz przeglądarka generuje zdarzenie onmouseout gdy zjadę wskaźnikiem z menu dopiero jak wyjadę poza to iframe, rozumiem ten tok myślenia i ominąłem ten problem przechwytując zdarzenie onmouseover od iframe i wszystko działa, sęk w tym że validator w3c twierdzi, że zdarzenie onmouseover dla iframe jest niezgodne ze standardami i co z tym fantem zrobić?
Stig
Administrator
Posty: 938
Rejestracja: pn paź 04, 2004 10:52 am

Re: iframe, onmouseover

Post autor: Stig »

adax2000 pisze:rozumiem ten tok myślenia i ominąłem ten problem przechwytując zdarzenie onmouseover od iframe i wszystko działa
Nie działa chociażby pod Operą.

Validator twierdzi, że argument onmouseover dla iframe jest niezgodny ze specyfikacją doctype, którego użyłeś (HTML 4.01 Transitional) i ma rację. Aby rozwiązać ten problem możesz zrezygnować z elementu iframe (zamiast tego utworzyć div z argumentem overflow o wartości auto) i/lub zastosować do rozwijanego menu sprawdzone rozwiązanie, zgodne z właściwymi standardami sieciowymi, które oprócz tego nie wykorzystuje JavaScript, dzięki czemu, w przeciwieństwie do użytego przez Ciebie, działa nawet przy wyłączonej obsłudze JS.
adax2000
Nowy
Nowy
Posty: 31
Rejestracja: ndz kwie 24, 2005 10:11 pm

Re: [HTML] Atrybut onmouseover a Iframe

Post autor: adax2000 »

"sprawdzone rozwiązanie" nie wnosi nic do sprawy jeśli chodzi o zachowanie względem iframe (dokładnie te same problemy)
piszesz, że nie używa js a używa i to takiego które obsłużą tylko najnowsze przeglądarki (z uwagi na używanie DOM)
ale nie w tym rzecz: w operze menu czy moje czy twoje obojętnie wchodzą pod iframe

znasz może sposób żeby przykryć tą iframe? ;)
porównaj http://www.quirksmode.org/css/tests/op_iframes.html
oraz http://list.opera.com/pipermail/opera-u ... 20086.html

nie chcę rezygnować z iframe (prędzej ze wsparcia dla opery), ma ona funkcjonalności, których żaden div nie udostępni (głównie chodzi o to że docelowo chcę zmieniać zawartość iframe bez konieczności ładowania całej tej bardzo ciężkiej strony od nowa)
gdym miał zamiar zrezygnować z iframe, to zrobił bym już to dawno temu i nie byłoby tego topicu wogóle

a jak ominąć ten problem z iframe onmouseover, zamiast to przechwytywać przechwycę onmouseover w body tych plików wewnątrz iframe i wyjdzie na to samo
Stig
Administrator
Posty: 938
Rejestracja: pn paź 04, 2004 10:52 am

Re: [HTML] Atrybut onmouseover a Iframe

Post autor: Stig »

adax2000 pisze:"sprawdzone rozwiązanie" nie wnosi nic do sprawy jeśli chodzi o zachowanie względem iframe (dokładnie te same problemy) (...) ale nie w tym rzecz: w operze menu czy moje czy twoje obojętnie wchodzą pod iframe
znasz może sposób żeby przykryć tą iframe? ;)
porównaj http://www.quirksmode.org/css/tests/op_iframes.html
oraz http://list.opera.com/pipermail/opera-u ... 20086.html
To "sprawdzone rozwiązanie" umięściłem jakby jako BTW. Nie stawiałem za pewnik, że nie będzie tego samego problemu (choć sam, czytając teraz swój post, rozumiem, że mogłeś zinterpetować to tak jak zinterpretowałeś). Wcześniej nie znałem problemu, o którym mowa w przedstawionych przez Ciebie linkach, zapewne dlatego, że iframe nigdy nie stosowałem.
adax2000 pisze:piszesz, że nie używa js a używa i to takiego które obsłużą tylko najnowsze przeglądarki (z uwagi na używanie DOM)
Napisałem, że nie używa JS, a to był mój błąd, bo używa JS, ale tylko do obsługi badzIEwiastej przeglądarki. W nowoczesnych przeglądarkach menu działa bez zastosowanego skryptu JS, a także przy wyłączeniu obsługi JS. Do działania nie wykorzystano DOM, tylko oparto się na odpowiednie zastosowanie CSS. Link, który podałem odnosił się do gotowego rozwiązania, o to link do całego artykułu.
adax2000 pisze:nie chcę rezygnować z iframe (prędzej ze wsparcia dla opery), ma ona funkcjonalności, których żaden div nie udostępni (głównie chodzi o to że docelowo chcę zmieniać zawartość iframe bez konieczności ładowania całej tej bardzo ciężkiej strony od nowa)
Może i iframe ma pewną funkcjonalność, ale zastosowanie w taki sposób pływających ramek stanowi problem z poruszaniem się po stronie dla użytkowników. Poza tym duży problem ze stosowaniem pływających ramek związany jest z SEO. Wiele wyszukiwarek ma problem ze stronami opartymi na ramki. Efekt może być taki, że strona nie znajdzie się w ogóle w wynikach wyszukiwania lub adres w wynikach prowadzić będzie do strony, która z założenia ma wczytywać się w ramce. Jest wiele alternatyw dla pływających ramek, z PHP'ową funkcją include na czele. A jeśli oddzieliłbyś strukturę od wyglądu (czyli w najpełniejszy sposób użyłbyś CSS), zastosował semantyczny kod oraz zrezygnował z tworzenia layout'u opartego na tabele na koszt div'ów to różnica w czasie wczytywania strony byłaby nieduża.

W sieci znalazłem takie oto stwierdzenie na temat ramek:
So my advice is to not use Iframe if possible at all. Iframes and Frames break down the basic structure of internet. Do not use them. Those are for kids.
I w 100% się z tą opinią zgadzam.

BTW, nie radziłbym rezygnować ze wsparcia dla Opery.

Swoją propozycję pozbycia się problemu podtrzymuję: zrezygnuj z iframe i dodatkowo oprzyj się na rozwiązanie, które podałem. Przynajmniej Twojej stronie będzie bliżej do właściwych standardów sieciowym.
tsuzso
Posty: 16
Rejestracja: sob cze 04, 2005 12:28 pm

Re: [HTML] Atrybut onmouseover a Iframe

Post autor: tsuzso »

Racja. Z drugiej strony jednak ramki oferują swoistą namiastkę interaktywności, której nie dadzą żadne includy i ciężko ten argument odeprzeć.
Widzę dwa rozwiązania tej sytuacji.
1. Dynamiczne przepisanie (przez JS) zawartości ładującej się do ukrytego (1px na 1px) iframe-a
2. AJAX :)
ODPOWIEDZ