Mam potrzebę użycia Google Maps w pewnym serwisie. Po wklejeniu do tegoż serwisu odpowiedniego kodu do API Firefox w konsoli Firebuga zaczął pokazywać błędy:
Object cannot be created at this context" code: "9
Zacząłem wietrzyć coś, że może to mieć związek na granicy HTML/XHTML. No i zgadłem.
Panowie z Google dali ciała. Ich skrypty do map nie działają ani w Firefoksie 2.0.0.6 ani w Operze 9.22
w XHTML-u. Nie dziwne, że przykład ze strony
z dokumentacją działa, bo XHTML-a to ma tylko w treści — jest serwowany jako text/html,
a więc przeglądarki traktują go jak usiany błędami HTML (nie XML).
Po, kurde, krótkim guglowaniu znalazłem wątek. No i kur… wszystko jasne. Amatorszczyzna — tylko czyja bardziej? Microsoftu, że MSIE jest tak zacofany, że nie wie, co to jest XHTML, czy Google, które przecież może używać DOM również w HTML-u?
11 komentarzy do wpisu Google Maps nie działa w XHTML-u!
Michał Moroz
A <object type=„text/html”> powinien zadziałać. Z wyłączeniem IE, ale od tego są już komentarze warunkowe.
W ten sposób omijam błędy Google Adsense. ;)
mcv
Michał: Te, dobrze wymyśliłeś, nawet bardzo dobrze!
Dla MSIE (i wszystkich, które nie zadeklarują, że obsugują application/xhtml+xml) będzie i tak serwowany jako papka text/html, więc dla niego zrobi się normalną obsługę, bez <object/>. Acha, ten, właśnie, bo narazie to MSIE6 robi taką totalną sieczkę z tego mojego serwisu, że ma się wrażenie, że jego silnik został napisany przez początkującego dwunastolatka w Delphi. Za jakiś czas pokażę screenshoty. ;-)
Michał Moroz
Cieszę się, że mogłem pomóc. :)
sunridin
Object linkujący do HTML jest identyczny z iframe. A o tym, że GMaps nie działa w XHTML, już pisałem dawno ;-)
sunridin
A, tak co do sposobu jak to zrobić z tym serwisem: ja robię to tak, że standardowo wysyłam stronę w HTML4 dla przeglądarek rozumiejących application/xhmtl+xml, a dla IE tagzupę XHTML-podobną, bo do rysowania linii (polylines) IE używa VML-a, którego trzeba dodać jako przestrzeń nazw. I to jest chyba najrozsądniejsze wyjście. Jeśli nie używasz polylines to możesz śmiało w HTML4 pisać.
mcv
sunridin: HTML4 dla rozumiejących XHTML? A co dla nie rozumiejących? ;-)
I wiem, że mogę wysyłać HTML. Wolę XML, jest dla mnie wygodniejszy.
sunridin
No przecież napisałem, dla IE wysyłasz tagzupę XHTML jako text/html, bo musisz dodać obsługę VML-a. Niestety przez Google wysyłanie poprawnego XHTML-a jest niemożliwe i m.in. dlatego XHTML się nie przyjął.
mcv
I w MSIE nie da się tego VML-a wysłać w HTML-u? Dziwne, zważywszy, że w HTML-u właśnie Microsoft również dodaje przestrzenie nazw (co czyni czasem np. Microsoft Outlook, gdy ktoś wysyła mail w HTML-u). Jakieś microsoftowe dziwactwa tam wkleja.
A wysyłanie poprawnego XHTML-a jest możliwe. Wystarczy spojrzeć co akceptuje przeglądarka. Ten jogger jest w XHTML-u i takoż dla Bota Google jest wysyłany „w trybie wstecznej zgodności”, czyli jako text/html. ;-) Moim zdaniem XHTML właśnie się przyjął, tylko mało kto wie, jak powinien taki prawdziwy XHTML wyglądać.
Szkoda mi tylko, że prawdopodobnie XHTML wymrze i zastąpi go nie XML-owy HTML5. No… chyba, że dla tego HTML-a pojawi się bardzo szybko szerokie wsparcie w postaci parserów różnej maści, wsparcia przez narzędzia XSLT, jakichś XPatho-podobnych klas w JS, walidatorów (syntaktycznych, jak np. zwykły xmlwf), itp.
sunridin
W sumie nie wiem czy się nie da dla IE w HTML VML-a, jakoś tak dla poprawności dałem XHTML (heh, paranoja, przecież IE XHTML nie kuma).
O wysyłaniu poprawnego XHTML-a wiem, ale chodzi o skrypty JS Google’a używające document.write(). Dodatkowo nowy walidator W3C wysyła nic poprzez HTTP_ACCEPT (czyli jakie typy MIME akceptuje) i taka negocjacja powoduje wysyłania dla walidatora text/html.
XHTML nie przyjął się właśnie dlatego, bo mało kto wie jak go poprawnie serwować, nawet ludzie w W3C wysyłają stronę walidatora jako text/html — mówią, że ze względu na mootools.
Warto jeszcze przeczytać artykuł porneLa.
Michał Moroz
Dopóki będziemy używać HTTP, to xhtml będzie w nim niedoceniany. Kiedy już zaczniemy używać czegoś fajniejszego (jak XMPP), to dopiero będzie można odczuć jego zalety. Ale to tylko moje prognozy na głęboką przyszłość. ;)
MalCom
A nie wychodzi HTML5 i wersja XMLowa – XHTML5?
Bo cos takiego pisalo, w ktoryms drafcie HTML5