Poniewaz strona, ktora prowadze tzn. http://www.monitoringkomputera.pl
jest w xhtml 1.1 strict i zawartosc jest serwowana jako xhtml+xml to
zaczalem miec problem z google analytics, ktorego kod podpialem do strony.
Wiadomo. Kod ten wyglada mniej wiecej tak:
<script type="text/javascript">
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl."
: "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost +
"google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
</script>
<script type="text/javascript">
try {
var pageTracker = _gat._getTracker("tutaj numerek trackera");
pageTracker._trackPageview();
} catch(err) {}
</script>
W xhtml nie ma mozliwosci korzystania z document.write czyli przy
prawidlowym serwowaniu zawartosci niestety GA nie dzialalo.
W poszukiwaniu rozwiazania natknalem sie na strone:
http://blog.kyd.com.au/google-analytics-and-xhtml/
Wdrozylem to rozwiazanie i wyglada ze wszystko dziala ok.
Czy ktos ewentualnie ma jakies inne doswiadczenia z problemem GA i xhtml i
moze sie odniesc co do zastosowanej przeze mnie metody obejscia problemu?
No i pytanie dodatkowe. W chwili obecnej serwuje zawartosc strony na
podstawie skryptu umieszczonego kiedys na stronie pornela (w index.php,
leciutko zmodyfikowany):
$xhtml = false;
if
(preg_match('/application\/xhtml\+xml(?![+a-z])(;q=(0\.\d{1,3}|[01]))?/i',
$_SERVER['HTTP_ACCEPT'], $matches)) {
$xhtmlQ = isset($matches[2])?($matches[2]+0.2):1;
if (preg_match('/text\/html(;q=(0\d{1,3}|[01]))s?/i',
$_SERVER['HTTP_ACCEPT'], $matches)) {
$htmlQ = isset($matches[2]) ? $matches[2] : 1;
$xhtml = ($xhtmlQ >= $htmlQ);
} else {
$xhtml = true;
}
}
if ($xhtml) {
header('Content-Type: application/xhtml+xml; charset=utf-8');
} else {
header('Content-Type: text/html; charset=utf-8');
}
Czy na chwile obecna (bo podejrzewam, ze skrypt ten zostal napisany
jeszcze za czasow krolowania IE6) nalezy go w jakis sposob zmodyfikowac,
zeby przystosowac do nowszych warunkow, czy zostawic bo jest ok?
--
Pozdrawiam
Gabriel Zastawnik
http://www.monitoringkomputera.pl
http://www.w3.org/MarkUp/2004/xhtml-faq#docwrite
Zamiast document.write mo�esz u�y� odpowiednich metod DOM, najpewniej
document.createElement(), ...
Nie no spoko. Wiem. Ale nie do konca jest to takie proste, bo skryptow
pozwalajacych na obejscie problemu document.write i artykulow temu
problemowi poswieconych jest w sieci sporo. I co rusz sie okazuje, ze te
metody maja jakies swoje wady, albo nie zawsze dzialaja.
A mnie chodzi o ten wlasnie konkretny przyklad - z GA, bo jest on chyba w
wiekszosci obecnie tworzonych stron wykorzystywany do tworzenia statystyk
odwiedzin.
Fragment skryptu:
<script type="text/javascript">
var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl."
: "http://www.");
document.write(unescape("%3Cscript src='" + gaJsHost +
"google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
</script>
odpowiada tylko i wylacznie za "wgranie" odpowiedniej wersji ga.js (albo dla
ssl, albo nie dla ssl).
Kyd zaproponowal:
<script type="text/javascript" src="http<?php if($_SERVER['HTTPS']) echo 's'
?>://www.google-analytics.com/ga.js"></script>
Wiec moje pytanie bylo takie - czy rozwiazanie podane przez Standardista Kyd
w tym przypadku bedzie najlepsze? Czy tez moze niesc za soba jakies
niebezpieczenstwo, ktore lepiej ominac w inny sposob?
Bo troche inaczej ma sie sprawa na przyklad z google maps. Tam jako obejscie
problemu wykorzystywania document.write wykorzystywalem skrypt
"xhtml-document-write.js" i dziala w zasadzie bardzo fajnie w kazdej z
przegladarek.
--
Pozdrawiam
Gabriel Zastawnik
http://www.monitoringkomputera.pl - Monitoring Komputera
> Fragment skryptu:
> <script type="text/javascript">
> var gaJsHost = (("https:" == document.location.protocol) ? "https://ssl."
> : "http://www.");
> document.write(unescape("%3Cscript src='" + gaJsHost +
> "google-analytics.com/ga.js' type='text/javascript'%3E%3C/script%3E"));
> </script>
>
> odpowiada tylko i wylacznie za "wgranie" odpowiedniej wersji ga.js (albo
> dla ssl, albo nie dla ssl).
>
> Kyd zaproponowal:
> <script type="text/javascript" src="http<?php if($_SERVER['HTTPS']) echo
> 's'
> ?>://www.google-analytics.com/ga.js"></script>
To nie jest dok�adnie to samo (orygina� dodatkowo zmienia ssl/www).
U�ywasz HTTPS w og�le? Jak nie, to olej ca�y cyrk i wstaw
http://www.google-analytics.com/ga.js na sztywno.
> Bo troche inaczej ma sie sprawa na przyklad z google maps. Tam jako
> obejscie problemu wykorzystywania document.write wykorzystywalem skrypt
> "xhtml-document-write.js" i dziala w zasadzie bardzo fajnie w kazdej z
> przegladarek.
Jak chcesz u�ywa� produkt�w Google, to odpu�� sobie XHTML. Google ci�gle
udowadnia, �e nie potrafi/nie chce wspiera� XHTML (s�dz�c po gafie z xmlns
na chromium.org obstawiam, �e nie potrafi).
--
http://pornel.net
this.author = new Geek("porneL");
No w sumie fakt, ale to mozna poprawic przy generowaniu przez php.
> U�ywasz HTTPS w og�le? Jak nie, to olej ca�y cyrk i wstaw
> http://www.google-analytics.com/ga.js na sztywno.
W sumie nie uzywam. Przynajmniej na tej stronie.
> Jak chcesz u�ywa� produkt�w Google, to odpu�� sobie XHTML.
Never:) Raczej na odwrot bym zrobil:) Czyli zrezygnowal z produktow google.
> Google ci�gle udowadnia, �e nie potrafi/nie chce wspiera� XHTML
Przeciez w koncu to zmienia. Wierze w to:)
> (s�dz�c po gafie z xmlns
> na chromium.org obstawiam, �e nie potrafi).
A o co chodzi? Bo nie wiem..
>> Google ci�gle udowadnia, �e nie potrafi/nie chce wspiera� XHTML
>
> Przeciez w koncu to zmienia. Wierze w to:)
>
>> (s�dz�c po gafie z xmlns
>> na chromium.org obstawiam, �e nie potrafi).
>
> A o co chodzi? Bo nie wiem..
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
[...]
<body xmlns="http://www.google.com/ns/jotspot" id="body" class=" en">
Strona dzia�a tylko dzi�ki temu, �e nie potrafi� w��czy� prawid�owego MIME
type.
o_O. O kurcze. Nie widzialem tego.
A tak troszke z innej beczki i wracajac do mojego drugiego pytania z
postu rozpoczynajacego watek - czy ten twoj skrypt do serwowania w php
xhtml+xml ktory daaawno temu pozwolilem sobie skopiowac z twojego
artykulu jest nadal ok? Czy cos trzeba moze w nim zmienic/uaktualnic?
> On 25 Lis, 21:00, porneL <niu...@pornel.net> wrote:
>>> A o co chodzi? Bo nie wiem..
>>
>> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
>> "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
>> <body xmlns="http://www.google.com/ns/jotspot" id="body" class=" en">
>> Strona działa tylko dzięki temu, że nie potrafią włączyć prawidłowego
>> MIME type.
>
> o_O. O kurcze. Nie widzialem tego.
A to u siebie widziałeś:
/----
Message-ID: <dc580301-3297-42be...@p35g2000yqh.googlegroups.com>
References: op.u3yu6...@aimac.local
[...]
User-Agent: G2/1.0
\----
Identyfikator msg-id musi być w nawiasach kątowych <> również w referencjach.
--
Andrzej P. Woźniak us...@pochta.onet.pl (zamień miejscami z<->h w adresie)
>>> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
>>> "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
>>> <body xmlns="http://www.google.com/ns/jotspot" id="body" class=" en">
>>> Strona dzia�a tylko dzi�ki temu, �e nie potrafi� w��czy� prawid�owego
>>> MIME type.
>>
>> o_O. O kurcze. Nie widzialem tego.
>
> A to u siebie widzia�e�:
> /----
> Message-ID:
> <dc580301-3297-42be...@p35g2000yqh.googlegroups.com>
> References: op.u3yu6...@aimac.local
> [...]
> User-Agent: G2/1.0
> \----
> Identyfikator msg-id musi by� w nawiasach k�towych <> r�wnie� w
> referencjach.
Eee, ca�e Google Groups to fuszerka. Polegaj� na <iframe height=100%>
(IEizm niezgodny z CSS2). Nie postarali si� o u�ywalne UI do moderacji,
ani podstawowy antyspam:
http://ejohn.org/blog/google-groups-is-dead/
Nie. Nie widzialem Andrzeju. Akurat to byl chyba jeden z 2 lub 3 postow,
ktore wyslalem w zyciu korzystajac z google groups. Nawet nie zagladalem w
naglowki. Niemozliwe, zeby chlopaki z google tak to zepsiuli... ale chyba
fakty same swiadcza za siebie.
--
Pozdrawiam
Gabriel Zastawnik
http://www.monitoringkomputera.pl - Monitoring Komputera
> On Sat, 28 Nov 2009 14:26:07 -0000, Andrzej P. Wozniak
> <us...@poczta.onet.pl.invalid> wrote:
>
>>>> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
>>>> "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
>>>> <body xmlns="http://www.google.com/ns/jotspot" id="body" class=" en">
>>>> Strona działa tylko dzięki temu, że nie potrafią włączyć prawidłowego
>>>> MIME type.
>>> o_O. O kurcze. Nie widzialem tego.
>> A to u siebie widziałeś:
>> /----
>> Message-ID:
>> <dc580301-3297-42be...@p35g2000yqh.googlegroups.com>
>> References: op.u3yu6...@aimac.local
>> [...]
>> User-Agent: G2/1.0
>> \----
>> Identyfikator msg-id musi być w nawiasach kątowych <> również w
>> referencjach.
>
> Eee, całe Google Groups to fuszerka.
Nie całe, przynajmniej nie od razu. Po udostępnieniu kompletnego archiwum
Usenetu interfejs był używalny, choć niekoniecznie zgodny ze standardami.
Później zaczęli coś dłubać i w Operze o widoku drzewka można było sobie tylko
pomarzyć, wreszcie kompletnie skopali wyszukiwanie i teraz szybciej coś można
znaleźć w "lewych" kopiach grup przerobionych na fora czy inne interfejsy do
pozycjonowania witryn i wyświetlania reklam. Nawet na świeżo postawionym
systemie, bez jakiejkolwiek historii czy personalizacji, to samo wyszukiwanie
może za każdym razem dać inne rezultaty.
> Polegają na <iframe height=100%>
> (IEizm niezgodny z CSS2). Nie postarali się o używalne UI do moderacji,
Miałeś osobiście okazję porównania z innymi interfejsami (np. Yahoogroups) czy
tylko powtarzasz cudzą opinię? Na moderowanie trzeba mieć swoje sposoby,
wprawy nie nabywa się od razu.
> ani podstawowy antyspam:
> http://ejohn.org/blog/google-groups-is-dead/
Większość List dyskusyjnych na Google nigdy nie nadawała się do użytku, a po
znalezieniu sposobu na CAPTCHA mnóstwo list zostało założone lub zaspamowane
z automatu, tymczasem Google nie uznają antyspamu innego poza własnym. Od
zawsze ignorują znakomitą większość zgłoszeń dokonywanych przez użytkowników
i grup, i list dyskusyjnych. Raz chyba się tylko zdarzyło, że bezmyślnie
odebrali dostęp do całej grupy pl.pregierz, bo ktoś zaspamował linkami do
materiałów dla pedofilów.
Ale te dyskusje to już trochę NTG, więc na koniec standardowe pytanie
w temacie grupy – kiedy strona http://pornel.net/krzaki-w-po?cie
będzie pod każdym względem poprawna? Bo jeśli taka nie będzie, to chyba mija
się z celem wytykanie cudzych błędów.
A co z nią jest nie tak?
http://validator.w3.org/check?uri=http%3A%2F%2Fpornel.net%2Fkrzaki-w-po%3Fcie
> This document was successfully checked as -//Walidator//DTD jest cienki
> i nic sensownego nie sprawdza//ZONK!