Blog

Dlaczego nie lubię Opery

No dobrze, tytuł miał za cel tylko nieco podgrzać tego zimnego kotleta, jakim są dyskusje o wyższości jednej przeglądarki nad inną. Spór jest zabawny o tyle, że interesuje tylko marginalną grupę maniaków, podczas gdy Chińczycy trzymają sie mocno i mają w nosie konkurencję.

Opera to świetna aplikacja dla nieco bardziej zaawansowanego użytkownika WWW. Ma mnóstwo funkcji, dobry interfejs, a przy tym jest naprawdę szybka. Jej autorzy od dawna stawiali na innowacyjność – Mozilla/FF “pożyczyły” od Opery np. przeglądanie w panelach. Firefox dopiero niedawno osiągnął porównywalny z norweską przeglądarką stosunek funkcjonalności do szybkości i rozmiaru.

Sam wolę jednak polecać tzw. zwykłym użytkownikom Firefoksa. Z czystego egoizmu: Flex nie działa i nie będzie działać pod żadną z obecnych wersji Opery.

Obsługa standardów w rodzaju DOM, JavaScript i CSS jest w Operze naprawdę niezła, ale moim zdaniem dziś to już trochę za mało. Jestem jednym z fanów aplikacji opartych o WWW, które w pełni korzystają z możliwości przeglądarek. Patrząc na dzisiejsze, bardziej skomplikowane strony, można się czasem zastanawiać, czemu ich autorzy tak rzadko korzystają np. z DOM, aby poprawić wygodę swoich aplikacji. W osławionym Gmailu pojawiło się kilka tego rodzaju nowinek i świat oszalał z zachwytu, podczas gdy takie rzeczy były możliwie już co najmniej od 2 lat. Możliwe, ale nie w Operze.

To doskonały program do przeglądania stron, ale ciągle wymaga sporo pracy, zanim sprawdzi sie jako platforma dla aplikacji internetowych. Z tego co wiem, Gmail również nie działa w Operze (chyba zmieniło się to w wersji 7.60 przeglądarki – będę wdzięczny za sprostowanie). Żeby nie być gołosłownym:

  • Opera nie pozwala na edycję w trybie WYSIWIG dokumentu HTML (chodzi o rozszerzenie contentEditable, obecne w IE, a potem zaimplementowane w Mozilli 1.3, a ostatnio w Safari)
  • brak obiektu XMLHttpRequest, który służy do przesyłania przez WWW komunikatów zapakowanych jako XML; od jakiegoś czasu to nieformalny standard; właśnie to jest przyczyną, dla której Gmail nie działa z tą przeglądarką
  • dziwactwa związane z DOM:
    • dałem sobie spokój ze wspieraniem Opery we Fleksie, gdy w pewnym momencie zaczęła się wysypywać przy operowaniu za pomocą JS na drzewie dokumentu
    • inna ciekawostka: obiekt o właściwości display: none NIE ISTNIEJE dla Opery; zamiast tego trzeba ustawić jego wymiary na 0px na 0px, usunąć obramowanie i dać visibility: hidden

Przypuszczam, że tego rodzaju drobiazgów jest więcej. Wiem, że są one kompletnie bez znaczenia dla normalnego użytkownika WWW, ale sprawa zaczyna wyglądać zupełnie inaczej, gdy zaczyna się pisać nieco bardziej złożoną aplikację z dużą ilością JS.

Ba, nawet nieszczęsny IE sprawuje się tu znacznie lepiej. Choć dziś to zabytek technologiczny (co oczywiście nie ma żadnego związku z udziałem w rynku), to jednak z powodzeniem, nawet dziś, da się oprzeć na nim całkiem skomplikowane aplikacje WWW. W międzyczasie można oczywiście osiwieć, walcząc z setkami błędów, ale myślę, że Joel Spolsky miał rację twierdząc, że Microsoft zaprzestał jego rozwoju z obawy, że IE mógłby konkurować z Windows jako platforma dla programów.

Ze świata nie istniejących aplikacji wróćmy na ziemię. Pomoże w tym przeczytanie artykułu, który przypomina, że dla zdecydowanej większości internet to niebieska literka e na pulpicie. I jak komuś takiemu mówić o przyszłości aplikacji internetowych, standardach czy integracji z kanałami RSS? ;)

Sam pamiętam, jak jeszcze kilkanaście miesięcy temu snuto plany podboju rynku przez alternatywne przeglądarki. Dziś zespół SpreadFirefox optymistycznie zakłada 10-procentowy udział w rynku ZA ROK. Taaaak, Chińczycy trzymają się mocno.

Firefox, Opera, Safari… Świetne programy, tylko kogo one, poza nami, obchodzą?

Comments

  1. Mój kot Maurycy, właściciel 2 kont na Gmail (małe “m”, BTW), potwierdza, że w Operze 7.60 działa bez problemu. :-)

  2. Odniosę się do 3 zarzutów:

    1) contentEditable – nie ma w Operze 7.60 i starsze. Jest to fakt bezsporny. Wydaje mi się, że powinniśmy ujrzeć tę funkcjonalność w 8.0. Na wishliście jest sporo żądań
    2) XMLHttpRequest – jest już w O7.60: XMLHttpRequest, XMLSerializer, and DOMParser (interoperable with existing implementations), DOM 3 Load & Save
    3) dziwactwa związane z DOM – poproszę o minimalne strony testowe pokazujące buga. Będę się mógł do nich odnieść i ewentualnie po uzyskaniu potwierdzenia błędów zgłosić do BTS-u

  3. 1) Mam nadzieję. W tej chwili Opera jest jedyną przeglądarką, która nie ma zaimplementowanej takiej funkcjonalności. Po pobieżnym przejrzeniu wątku na forum, który tu podlinkowałeś, mam tylko nadzieję, że developerzy nie posłuchają “ekspertów”, którzy nie potrafią odróżnić Dreamweavera od przeglądarki z obsługą contentEditable :P.

    Przy okazji, kiedy można spodziewać się ósemki?

    2) Świetnie!

    3) Heh, powinienem był od razu przygotować testy, ale mi się nie chciało :). Dziś zmarnowałem na to wieczór i jesteście mi (razem z Opera Software) dłużni dobre wino – piwa nie lubię :).

    Jeżeli chodzi o drugi bug, czyli znikanie elementu o własności display: none, to dotyczy on pływających ramek (iframe). Ale tu przyznaję się do winy: na buga trafiłem gdzieś koło wersji 7.0 i od tego czasu go nie sprawdzałem. Widzę, że w 7.51 jest już OK. Jeśli ktoś chce to sprawdzić samemu, może to zrobić na tym pliku. Jest tam osadzona ramka, która nie ładuje swojej zawartości, o ile ma styl display: none (chociaż powinna załadować). Bug na pewno reprodukuje się w wersji 7.0, ale w nowszych już powinno być OK.

    Za to i wersja 7.0 i 7.54 (na 7.60 nie sprawdzałem) ZAWSZE wysypuje mi się w innej sytuacji [posiadacze Opery – ostrożnie z klikaniem na link]. Co ciekawe, znowu chodzi o display: none. Mam tam znacznik select, osadzony w niewyświetlanym rodzicu. Przy próbie wyczyszczenia select za pomocą innerHTML, Opera ślicznie pada. Wystarczy ustawić display: block u rodzica, by było OK.

    Cóż, takie rzeczy są dosyć egzotyczne, ale pojawiają się w wielu miejscach mojego CMSa. A nie muszę chyba tłumaczyć, że szukanie kilka godzin błędu, który występuje tylko w jednej przeglądarce, może porządnie wkurzyć człowieka.

    Podobnie jak robienie za betatestera oprogramowania, które nawet nie jest Open Source. Ale to już inna bajka :P.

  4. Z tym wysypywaniem się Opery na stronie crash.html nie potwierdzam (Opera 7.6p1)

  5. Specjalnie ze względu na moich drogich czytelników-operowców ;) ściągnąłem wersję 7.60 i potwierdzam, że błąd z wysypywaniem się przeglądarki już u mnie nie występuje.

    Jednym słowem, idzie ku lepszemu. Z mojej listy została jeszcze do dodania edycja strony w trybie WYSIWYG.

  6. No to cieszę się, że wyprostowaliśmy znacznie cały obraz sytuacji :).
    Gdybyś w przyszłości miał problemy z Operą to wal śmiało na Forum polskich użytkowników Opery. Jesteśmy tam jak lekarze pierwszego kontaktu ;), czyli jeśli błachy problem to poradzimy, jeśli trudniejszy to skierujemy do specjalisty :D
    PS. Miło by było, gdybyś jakieś małe sprostowanko zamieścił :). Broń Boże nie odczytaj tej prośby jakoś negatywnie.

  7. Przy okazji, kiedy można spodziewać się ósemki?

    Nie wiem i tak naprawdę nikt nie wie. Możemy jedynie przewidywać, że od momentu ukazania się finalnej wersji 7.60 (w tej chwili trwają testy beta) będzie to co najmniej pół roku.

    Podobnie jak robienie za betatestera oprogramowania, które nawet nie jest Open Source.

    Czy oprogramowanie musi być OS, żeby miało w sobie to coś, dla którego jesteśmy skłonni udzielać się od kilkunastu lat popularyzując to oprogramowanie? PS. Coś jest nie tak z wysyłaniem komentarzy. Po naciśnięciu wyślij, wysyła, ale w pewnym momencie Opera 7.60 zatrzymuje się i nie może dokończyć ładowania strony.

  8. Czy oprogramowanie musi być OS, żeby miało w sobie to coś, dla którego jesteśmy skłonni udzielać się od kilkunastu lat popularyzując to oprogramowanie?

    Hm… Tak? :) Po prostu w tym wypadku ktoś zarabia na moim czasie. Oczywiście rozumiem Cię, bo sam cztery lata prowadziłem stronę o grze komputerowej (bynajmniej nie darmowej i bynajmniej nikt mi za to nie płacił), ale chyba robię się za stary na tego rodzaju akcje charytatywne. W wypadku OS nie mam poczucia zmarnowanego czasu, bo wynik w postaci kodu trafia do każdego, kto jest nim zainteresowany, a nie służy tylko poprawie wyników sprzedaży firmy X.

    Coś jest nie tak z wysyłaniem komentarzy. Po naciśnięciu wyślij, wysyła, ale w pewnym momencie Opera 7.60 zatrzymuje się i nie może dokończyć ładowania strony.

    Hihi, kolejny bug Opery?

    Udało mi się ustalić, że Operze przeszkadza, gdy w nagłówku Location użyję URL z haszem (#) na końcu. Wyrocznia mówi:

    The field value consists of a single absolute URI.

    HTTP/1.1

    A URL może przecież zawierać odwołanie do fragmentu dokumentu. Póki co rozwiązałem to na zasadzie quick & dirty i Operze nie wysyłam tego fragmentu adresu.

    Miło by było, gdybyś jakieś małe sprostowanko zamieścił :)

    Zobaczymy :). W każdym razie nie było moim zamiarem wszczynać flame’ów i mam nadzieję, ze nikt z Was nie poczuł się urażony :). Tytuł służył głównie jako mała prowokacja – jak widać – skutecznie.

  9. Czy moglbys na przyszlosc część energii zamiast na narzekanie przenaczyć na zrobienie test-case i wysłanie do BTS?

    Polacy też trzymają się mocno (Opera polaków też), zatem zgłaszając te bugi programistom, a nie wyłącznie publiczce zyskasz coś dla siebie – mniej zbugowaną Operę, która cię nie będzie do pasji doprowadzać w przyszłości… …a może podczas robienia test-case znajdziesz przyczyne w swoim kodzie? (nikt nie jest doskonały)

    btw: 0
    Warning: Cannot modify header information – headers already sent by (output started at /home2/szafran/public_html/comment:29) in /home2/szafran/public_html/comment on line 34

  10. btw: 0 Warning (…)

    Thanks, fixed.

  11. Udało mi się ustalić, że Operze przeszkadza, gdy w nagłówku Location użyję URL-a z haszem (#) na końcu.

    Hmm… Chyba znowu musze prosić o dokładny kod powodujący błąd. Bo u mnie taki kod działa:

    <?php
    header("Location: http://www.w3.org/TR/CSS21/selector.html#q2");
    ?>
    
  12. PS. No i chyba coś ten hack nie działa, bo znowu po naciśnięciu Wyślij wszystko stanęło ;)

  13. No i chyba coś ten hack nie działa, bo znowu po naciśnięciu Wyślij wszystko stanęło ;)

    Mówiłem, że to quick & dirty :). Tak czy inaczej, teraz będzie działać (w każdym razie tak jest na mojej O 7.00, 7.54 i 7.60).

    Natomiast jeśli chodzi o nagłówek Location, to u mnie problemy są wtedy, gdy przekierowanie następuje do tego samego pliku, z którego przywędrowaliśmy. Tak więc Twój przykład działa, ale, jeśli możesz, sprawdź to:

    Plik source.php:

    
    <a href="target.php">go to target</a>
    <br />
    <a name="anchor">anchor</a>
    

    Plik target.php:

    
    <?php
    header('Location: '.$_SERVER['HTTP_REFERER'].'#anchor');
    ?>
    

    Gdy nie ma hasza w adresie, jest OK.

  14. PS. Jeśli zamiast $_SERVER['HTTP_REFERER'] poda się wprost URL pliku, nic się nie zmienia.

  15. Dzięki za info. Błąd jest w tej chwili dyskutowany na Beta Testing Forum. Z pewnością zostanie zgłoszony do BTS.

  16. Hmmm, dziwne. Nie rozumiem czemu z gorzka ironia cytujesz moj post sprzed roku kiedy mowilem, ze dzis powinnismy miec 5-7% rynku… wszak tyle wlasnie Gecko ma!

  17. Gdybym miał czepiać się detali, dodałbym, że powinnismy osiągnąć tych 5-7% w czerwcu, bo wtedy minął rok. Tymczasem w ciągu roku (między VI.2004 i VI.2004) udział Gecko w rynku wzrósł z 1,6% do 4,3%, czyli nie osiągnął nawet zakładanego dolnego progu. Nawet dziś, czyli prawie pół roku później, pomimo szumu wokół FF nie udało dobić się jeszcze do tej dolnej granicy.

    Ale ja miałem na myśli raczej to, że prognozy MozTeamu są dziś znacznie ostrożniejsze od tego, na co Ty (ja zresztą również) miałeś nadzieję rok prawie półtora roku temu. Dziś cel to 10% pod koniec 2005, a nie “15-20%” pół roku wcześniej.

    Oczywiście bawienie się we wróżkę jest raczej pozbawione sensu, bo nikt nie jest w stanie przewidzieć tego, co się stanie. Sam jestem pod wrażeniem tego, co się dzieje wokół sfx i myślę, że jedna z największych (największa?) kampanii promocyjnych w świecie Open Source może dać nieoczekiwane efekty.

    Z drugiej strony, kiedy np. słyszę na wykładzie z “programowania WWW”, że strony trzeba tworzyć pod IE, bo tylko on się liczy na rynku, to mój optymizm trochę gaśnie :(.

  18. > Dzięki za info. Błąd jest w tej chwili dyskutowany na Beta Testing Forum. Z pewnością zostanie zgłoszony do BTS.

    Hi, hi… Długo to trwało, ale błąd z anchorem http://my.opera.com/community/forums/topic.dml?id=69469 jest już poprawiony w Merlinie. No i contentEditable też jest :D

Comments are now closed