CDATA
Moderator: Pomocy?!
CDATA
Przeglądarka: Mozilla/5.0 (Windows; U; Windows NT 5.0; PL; rv:1.5a) Gecko/20030728 Mozilla Firebird/0.6.1
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
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
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
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
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
Przeglądarka: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.6b) Gecko/20031226 Firebird/0.7+
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
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
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
Przeglądarka: Mozilla/5.0 (Windows; U; Windows NT 5.0; PL; rv:1.5a) Gecko/20030728 Mozilla Firebird/0.6.1
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!!!!!
- ziem
- Posty: 57
- Z nami od: 11 października 2003, 17:42
- Lokalizacja: Skądinąd
Re: Podziękowania dla marcoosa
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
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
Przeglądarka: Mozilla/5.0 (Windows; U; Windows NT 5.0; PL; rv:1.5a) Gecko/20030728 Mozilla Firebird/0.6.1
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
Przeglądarka: Mozilla/5.0 (Windows; U; Windows NT 5.1; PL; rv:1.5) Gecko/20031007 Firebird/0.7
- nutado
- Posty: 190
- Z nami od: 18 grudnia 2002, 13:45
- Lokalizacja: małopolska
Re: Podziękowania dla marcoosa
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
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...
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...
hADeSik
Dodatki PL do Mozilli | www.podatki.4un.pl | www.zus.4un.pl | www.wirusy.4un.pl | www.sklep.4un.pl i nie tylko...
- hADeSik
- Moderator
- Posty: 844
- Z nami od: 02 czerwca 2002, 21:18
- Lokalizacja: ja go znam?
Re: Podziękowania dla marcoosa
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
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...
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
<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
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...
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ść
Wróć do Standardy WWW i źle działające strony
Kto jest online
Zarejestrowani użytkownicy: Bing [Bot], Google [Bot]