Strona 1 z 1

[HTML] Atrybut onmouseover a Iframe

: sob lip 02, 2005 10:37 pm
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ć?

Re: iframe, onmouseover

: ndz lip 03, 2005 5:38 pm
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.

Re: [HTML] Atrybut onmouseover a Iframe

: pn lip 04, 2005 2:41 am
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

Re: [HTML] Atrybut onmouseover a Iframe

: pn lip 04, 2005 11:15 am
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.

Re: [HTML] Atrybut onmouseover a Iframe

: wt lip 26, 2005 11:00 pm
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 :)