MozillaPL.org - polskie centrum Mozilli

Główne menu:

CDATA

Dyskusje na temat standardów WWW i zgłoszenia stron niedziałających poprawnie w przeglądarkach z rodziny Mozilli (w tym Mozilla Firefox)

Moderator: Pomocy?!

CDATA

Postautor: ziem » 08 stycznia 2004, 23:12

Przeglądarka: Mozilla/5.0 (Windows; U; Windows NT 5.0; PL; rv:1.5a) Gecko/20030728 Mozilla Firebird/0.6.1

Witam,

Mam takie pytanko - w XHTML zalecane jest stosowanie nowych znaczników do umieszczania Javascriptu i CSSa w znacznikach na stronie:

<script type="text/javascript"><![CDATA[TU WPISZ KOD JAVASCRIPT]]></script>

niestety skrypty się wywalają, jeśli zapiszę to jak powyżej - unikam tego problemu w ten sposób:

<script type="text/javascript">//<![CDATA[
TU WPISZ KOD JAVASCRIPT
//]]>
</script>

w CSS // oczywiście nie działa - a style umieszczone wewnątrz są ignorowane
<style type="text/css">
<![CDATA[
]]>

Jak być możliwie zgodnym ze standardem? Zakomentować np w /* */ ?
ziem
 
Posty: 57
Z nami od: 11 października 2003, 17:42
Lokalizacja: Skądinąd

Re: CDATA

Postautor: marcoos » 09 stycznia 2004, 00:01

Przeglądarka: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7a) Gecko/20040108 Firebird/0.8.0+

ziem pisze:Jak być możliwie zgodnym ze standardem? Zakomentować np w /* */ ?


Można. Ale po co? Nie lepiej dać CSS do zewnętrznego pliku?

Mając CSS w tym samym pliku co HTML traci się główny zysk z jego stosowania...
marcoos
Moderator
 
Posty: 2227
Z nami od: 12 października 2002, 10:25
Lokalizacja: Wrocław

Re: CDATA

Postautor: Gandalf » 09 stycznia 2004, 00:05

Przeglądarka: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.6b) Gecko/20031226 Firebird/0.7+

ziem pisze:niestety skrypty się wywalają, jeśli zapiszę to jak powyżej


Slucham?
Moglbys wskazac skrypty ktore sie wywalaja?
Gandalf
 
Posty: 1802
Z nami od: 29 czerwca 2002, 04:37
Lokalizacja: Warszawa

Re: CDATA

Postautor: ziem » 09 stycznia 2004, 01:10

Przeglądarka: Mozilla/5.0 (Windows; U; Windows NT 5.0; PL; rv:1.5a) Gecko/20030728 Mozilla Firebird/0.6.1

Gandalf pisze:Moglbys wskazac skrypty ktore sie wywalaja?


Może to być na przykład taki skrypcik:

<script type="text/javascript">
<![CDATA[
function doNothing()
{
alert("Doing nothing as required!");
}
]]>
</script>
</head>

<body onload="doNothing();">

Zrzut z konsoli:
_______________________________________________________
Błąd: syntax error
Plik źródłowy: file:///C:/Documents%20and%20Settings/Administrator/Local%20Settings/Temp/non174.htm
Wiersz: 24
Kod źródłowy:
<![CDATA[
____________________________________________________________
ziem
 
Posty: 57
Z nami od: 11 października 2003, 17:42
Lokalizacja: Skądinąd

Postautor: Gandalf » 09 stycznia 2004, 01:20

Przeglądarka: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.6b) Gecko/20031226 Firebird/0.7+

Hmm, dlaczego Mozilla jest na to podatna?
Domel? Marcoos? Piotrek? Marek? Prefix? Ktokolwiek????
Gandalf
 
Posty: 1802
Z nami od: 29 czerwca 2002, 04:37
Lokalizacja: Warszawa

Postautor: marcoos » 09 stycznia 2004, 02:08

Przeglądarka: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7a) Gecko/20040108 Firebird/0.8.0+ (marcoos)

Gandalf pisze:Hmm, dlaczego Mozilla jest na to podatna?
Domel? Marcoos? Piotrek? Marek? Prefix? Ktokolwiek????


1. Pliki .html czytane lokalnie mają w Mozilli wirtualny typ mime "text/html".
2. Pliki .xhtml czytane lokalnie mają w Mozilli wirtualny typ mime "application/xml+xhtml", a pliki .xml mają wówczas typ "text/xml"

2. Pliki o typie text/html traktowane są jako klasyczny HTML, nawet jeśli deklarują DOCTYPE zgodny z XHTML - decyduje MIME. XHTML wysłany z typem html nie jest więc de facto prawidziwym XHTMLem, tylko nie-wiadomo-czym.

3. Sekcja <![CDATA[ ]]> występuje w XML, nie występuje wewnątrz plików HTML.

4. Mozilla bardzo ściśle przestrzega w/w zasad.


Tak więc, jeśli plik nazywa się .xhtml albo .xml lub wysyłany jest z serwera z xml'owym content-type, Mozilla uruchamia parser XML i powyższy kod działa poprawnie. Jeśli ma text/html - parser zupy znaczników, a "<[CDATA[" jest przekazywane do intepretera JavaScriptu, który próbuje to wykonać (a nie jest w stanie, bo to nie JS).

Zatem, jeśli chce się mieć CDATA czytelną zarówno w Mozilli (CDATA tylko dla prawdziwego XML) jak i IE (brak obsługi typów XML), trzeba używać tej śmiesznej sztuczki:

Kod: Zaznacz cały
<script type="text/javascript">
// <![CDATA[
 skrypt();
// ]]>
</script>


lub od strony serwera np. przez php'owską metodę Header("...") odpowiednio dla browsera ustawiać content-type.

Opisałem jaki jest stan faktyczny. Dlaczego taki jest, to już pytanie nie do mnie, a do Mozilla.org. IMHO w tym wypadku Mozilla powinna być nieco bardziej liberalna.
marcoos
Moderator
 
Posty: 2227
Z nami od: 12 października 2002, 10:25
Lokalizacja: Wrocław

Postautor: Gandalf » 09 stycznia 2004, 03:00

Przeglądarka: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.6b) Gecko/20031226 Firebird/0.7+

NIe liberalna moze... tylko bardziej logiczna.
Jezeli sse plik z lokala to chyba jasne, ze nie ma mime... Wiec po cholere ustalac mime dla plikow ktore podaja doctype?!?!

Zonk. Ktos ma moze ID tego bledu?
Gandalf
 
Posty: 1802
Z nami od: 29 czerwca 2002, 04:37
Lokalizacja: Warszawa

Postautor: Gandalf » 09 stycznia 2004, 03:00

Przeglądarka: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.6b) Gecko/20031226 Firebird/0.7+

A co robi na linuksie z plikiem bez rozszerzenia?!?!?
Gandalf
 
Posty: 1802
Z nami od: 29 czerwca 2002, 04:37
Lokalizacja: Warszawa

Postautor: marcoos » 09 stycznia 2004, 03:12

Przeglądarka: Mozilla/5.0 (Windows; U; Windows NT 5.1; PL; rv:1.5) Gecko/20031007 Firebird/0.7

Gandalf pisze:NIe liberalna moze... tylko bardziej logiczna.
Jezeli sse plik z lokala to chyba jasne, ze nie ma mime... Wiec po cholere ustalac mime dla plikow ktore podaja doctype?!?!


Dla plików lokalnych Mozilla jakoś wykombinowywuje MIME.

Ale to nie MIME jest problemem, ale to, jak Mozilla traktuje CDATA dla mimeType.toLower().indexOf("xml")==-1.

W pliku XHTML o MIME nie_ikseemelowym też CDATA nie zadziała. Zadziała tylko dla plików XML z mimeType.toLower().indexOf("xml")!=-1

(Shit, jeśli zaczynam mówić w JavaScripcie zamiast po polsku, to znaczy, że chyba czas już spać ;))

Zonk. Ktos ma moze ID tego bledu?


Nie ma buga o CDATA, przeszukałem bugzillę chyba z pięć razy. Zgłoś. :)
marcoos
Moderator
 
Posty: 2227
Z nami od: 12 października 2002, 10:25
Lokalizacja: Wrocław

Postautor: marcoos » 09 stycznia 2004, 09:22

Przeglądarka: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7a) Gecko/20040108 Firebird/0.8.0+ (marcoos)

Gandalf pisze:A co robi na linuksie z plikiem bez rozszerzenia?!?!?


Przyjmuje dla niego mime "text/xml", więc CDATA działa.
marcoos
Moderator
 
Posty: 2227
Z nami od: 12 października 2002, 10:25
Lokalizacja: Wrocław

Podziękowania dla marcoosa

Postautor: ziem » 09 stycznia 2004, 11:02

Przeglądarka: Mozilla/5.0 (Windows; U; Windows NT 5.0; PL; rv:1.5a) Gecko/20030728 Mozilla Firebird/0.6.1

marcoos, dzięki za objaśnienia - przekonfigurowałem lokalnego apache'a na wysyłanie odpowiedniego typu mime ( application/xhtml+xml xhtml) - napisałem 100% zgodnie ze standardem stronkę i porównałem wyniki:

IE - szkoda gadać... niech M$ lepiej zdezintegruje to z systemu - mniej wstydu będzie
Opera - ładuje poprawnie CSS, na JS się krzaczy (wcale nie ładuje)
Mozilla - po prostu działa IDEALNIE!!! MOZI RULEZ!!!!!
Ostatnio zmieniony 09 stycznia 2004, 11:20 przez ziem, łącznie zmieniany 1 raz
ziem
 
Posty: 57
Z nami od: 11 października 2003, 17:42
Lokalizacja: Skądinąd

Re: Podziękowania dla marcoosa

Postautor: quiris » 09 stycznia 2004, 11:07

Przeglądarka: Opera/7.50 (Windows NT 5.0; U) [en]

ziem pisze:Opera - ładuje poprawnie CSS, na JS się krzaczy (wcale nie ładuje)

Opera w wersji 7.23 i starsze nie obsługuje elementu <script> jeśli dostaje stronę z najstępującymi typami MIME: text/xml, application/xml lub application/xhtml+xml [ http://www.opera.com/docs/specs/#html ]
Tego problemu nie ma w Operze 7.50, która aktualnie jest w fazie testów alfa/beta.

PS. Uwaga: Jeśli tworzysz skrypty dla tego typu stron, nie możesz używać document.write (nie jest on obsługiwany, jako niezgodny z XML zarówno przez Mozillę, jak i Operę 7.50)
quiris
 
Posty: 659
Z nami od: 31 lipca 2002, 06:53

Re: Podziękowania dla marcoosa

Postautor: quiris » 09 stycznia 2004, 11:21

Przeglądarka: Opera/7.50 (Windows NT 5.0; U) [en]

ziem pisze:IE - szkoda gadać... miech M$ lepiej zdezintegruje to z systemu - mniej wstydu będzie

Jeśli przesyłasz text/xml lub application/xml to IE się buraczy, ponieważ jej parser [MSXML 3.0 chyba] nie obsługuje parametru IGNORE. [ http://www.w3.org/2002/04/xml_bugs/ ]
Jest wprawdzie dostępny parser MSXML 4.0, ale nie jest używany jako domyślny przez tę przeglądarkę.

Jeśli przesyłasz application/xhtml+xml to MSIE będzie chciało zapisać tę stronę, ponieważ nie obsługuje tego content-type
quiris
 
Posty: 659
Z nami od: 31 lipca 2002, 06:53

OK, ale

Postautor: ziem » 09 stycznia 2004, 12:09

Przeglądarka: Mozilla/5.0 (Windows; U; Windows NT 5.0; PL; rv:1.5a) Gecko/20030728 Mozilla Firebird/0.6.1

Miło dowiedzieć się, że Opera już wkrótce będzie poprawnie czytać <script>.
Jeśli chodzi o IE - wobec popularności XHTML jest to żenada, że M$ nie zdecydował się na jego poprawną obsługę w domyślnej konfiguracji IE6.0. Fajnie, że być może jak się gdzieś głęboko podłubie to być może i wyświetliłby poprawnie - ale nie należy zapominać, że ta przeglądarka jest adresowana do ludzi, którzy cierpią, kiedy muszą wpisac ręcznie URLa. Ponieważ IE ma 95% rynku - nowe standardy będą się przebijać w wielkich bólach - i jakie mają szanse się przebić, jak M$ non stop sabotuje? Ja na przykład jestem przekonany, że zastąpienie IE 6.0 jakąś nową wersją będzie na rynku trwało ze 3 lata - do dziś koło 20% osób używa IE 5.5.
ziem
 
Posty: 57
Z nami od: 11 października 2003, 17:42
Lokalizacja: Skądinąd

Postautor: nutado » 09 stycznia 2004, 12:38

Przeglądarka: Mozilla/5.0 (Windows; U; Windows NT 5.1; PL; rv:1.5) Gecko/20031007 Firebird/0.7

Ja sie zastanawiam dlaczego microsoft tak uparcie trzyma w stagnacji ta swoja przegladarke??? Jaki maja w tym interes??? Naprawde nie potrafie tego zrozumiec... Czy takim ogromnym problemem byloby "nauczenie" IE by obslugiwal poprawnie xhtml? Jak dalej bedzie jak jest do tej pory, to standardy nigdy nie beda w powszechnym uzyciu :(
nutado
 
Posty: 190
Z nami od: 18 grudnia 2002, 13:45
Lokalizacja: małopolska

Re: Podziękowania dla marcoosa

Postautor: marcoos » 09 stycznia 2004, 14:58

Przeglądarka: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7a) Gecko/20040108 Firebird/0.8.0+ (marcoos)

ziem pisze:IE - szkoda gadać... niech M$ lepiej zdezintegruje to z systemu - mniej wstydu będzie


Dla IE wysyłaj jako text/html (odpowiedni kod wykrywający IE po userAgencie to w PHP max. 4 linijki) lub po prostu stosuj w/w sztuczkę z JS-owymi komentarzami i wysyłaj wszystkim text/html. (Nie jest to zalecane przez W3C, ale dla XHTML 1.0 warunkowo dopuszczone.)
marcoos
Moderator
 
Posty: 2227
Z nami od: 12 października 2002, 10:25
Lokalizacja: Wrocław

Re: OK, ale

Postautor: hADeSik » 09 stycznia 2004, 15:19

Przeglądarka: Mozilla/5.0 (Windows; U; Win98; pl-PL; rv:1.5) Gecko/20031007 MultiZilla/1.6.0.0e

ziem pisze:Ja na przykład jestem przekonany, że zastąpienie IE 6.0 jakąś nową wersją będzie na rynku trwało ze 3 lata - do dziś koło 20% osób używa IE 5.5.

pewnie dłużej - nowe IE będzie tylko z nowym systemem... :evil:

IE 6 - 67 %
IE 5 - 16%
IE 5.5 - 10%

http://www.ranking.pl/rank.php?stat=browAL&details=1

nutado pisze:Ja sie zastanawiam dlaczego microsoft tak uparcie trzyma w stagnacji ta swoja przegladarke??? Jaki maja w tym interes???

kasa - nowa wersja będzie płatna... :evil:
hADeSik
Moderator
 
Posty: 844
Z nami od: 02 czerwca 2002, 21:18
Lokalizacja: ja go znam?

Re: Podziękowania dla marcoosa

Postautor: quiris » 09 stycznia 2004, 15:27

Przeglądarka: Opera/7.50 (Windows NT 5.0; U) [en]

marcoos pisze:Dla IE wysyłaj jako text/html (odpowiedni kod wykrywający IE po userAgencie to w PHP max. 4 linijki)

Ja używam czegoś takiego:
Kod: Zaznacz cały
<?php
  if ((stristr($_SERVER['HTTP_ACCEPT'], "application/xhtml+xml"))
  && (!stristr($_SERVER['HTTP_USER_AGENT'],"Opera"))
  ||(stristr($_SERVER['HTTP_USER_AGENT'],"Opera/7.5")))
  {
    header("Content-Type: application/xhtml+xml");
    echo "<?xml version="1.0" encoding="iso-8859-2"?>\r\n";
    echo "<?xml-stylesheet type="text/css" href="layout.css"?>\r\n";
  }
  else
  {
    header("Content-type: text/html; iso-8859-2");
  }
?>
quiris
 
Posty: 659
Z nami od: 31 lipca 2002, 06:53

Re: OK, ale

Postautor: wariat » 09 stycznia 2004, 19:41

Przeglądarka: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.6b) Gecko/20031208

hADeSik pisze:kasa - nowa wersja będzie płatna... :evil:

A to akurat jest IMO bardzo dobra wiadomosc dla wszystkich "alternatywnych". Najlepiej zeby platna byla godzina kozystania i zeby MS mial nad tym pela kontrole ... w kilka tygodni statystyki sie odwroca ;-)
Lepszy kiepski MOTYW dla Ognistego Lisa, niż najpiękniejsza skórka Pandy Małej - www.firefox.pl
<b>wARIAT (Mozilla 0.6-MozillaPL 1.6, FireFox pl-PL 0.8-1.0, Thunderbird pl-PL 0.7)</b>
Magazyn LOOP
wariat
 
Posty: 720
Z nami od: 09 maja 2002, 20:01
Lokalizacja: Poznan

Re: OK, ale

Postautor: Gość » 18 stycznia 2004, 00:59

Przeglądarka: Mozilla/5.0 (Windows; U; Windows NT 5.1; PL; rv:1.6) Gecko/20040113

hADeSik pisze:kasa - nowa wersja będzie płatna... :evil:


Z tego co wiem to ta "opłata" będzie wliczona w koszt Longhorna. Po prostu M$ zamierza nie dawać uaktualnień IE dla starszych systemów, tylko pozostawić nowszą zintegrowaną wersję w Longhornie.
Gość
 

Następna

Wróć do Standardy WWW i źle działające strony

Kto jest online

Zarejestrowani użytkownicy: Baidu [Spider], Bing [Bot], Google [Bot]

Przejdź do powiązanej strony

Nawigacja:

Stopka: