tracker favicon userscript

Összeütöttem egy userscriptet, ami – az előzőhöz hasonlóan – az olvasatlan üzenetek számát jeleníti meg a faviconban. Az script ezúttal a hup.hu/tracker/$USERID/favicon_script¹ oldalon számolja össze az új üzenetet tartalmazó témák számát.

Mindezt ötpercenként teszi, a hup.hu/tracker oldalon. Azért lett egy konkrét oldalra korlátozva, mert ez a script külön oldallekérést hajt végre, és abból meg fölösleges többet futtatni egyszerre. A HUP feltehetőleg bírná, de nem óhajtok más erőforrásával játszani, és az ötpercenként egy lekérés szerintem még belefér.

Valami miatt ez a script Firefox alatt nem, csak Chrome alatt működik (Opera alatt nem teszteltem), de eleve nem lett agyontesztelve. Firefox alatt az AJAX-lekérés readyState-je sosem akar 4 lenni, sőt, láthatólag nem is létezik, és erre a hibára a FireBug nekem kevés.

A dolgot megnehezítette némiképp, hogy a HUP nem érvényes XML (a HUP logó eleme nincs lezárva), emiatt a JavaScript saját XML-értelmezőjét nem lehetett ráereszteni, tehát a parsoláshoz nem használhattam sem XPath-t, de még a getElementsByTagName is tiltólistán volt. Így születtek a kódban efféle szépségek:

var nodeList = xml.childNodes[23].lastChild
	.previousSibling.lastChild.childNodes[1]
	.childNodes[3].childNodes[11].childNodes[0]
	.childNodes[3].childNodes 

Amúgy a „csakműködjönmár” fejlesztési irányelvet követve a kód is elég csúnya, Isten ötpercenként le is öl miatta egy-két kiscicát.

A script elérhető itt.

¹Azért nem a sima /tracking/$USERID oldalon, hogy szerveroldalról követhető legyen, hány lekérés tudható be a scriptnek.

Hozzászólások

S tényleg. Ahhoz képest, hogy doctype szerint XHTML 1.0 Strict, egy fia img sincs szabályosan lezárva...

Azt mondjuk külön szomorkásnak tartom, hogy a Javascript nem kezeli normálisan a tagsoupot. Elvileg ha becsatoltam volna valahova a DOM-fába, akkor működhetett volna a dolog, de akkor már inkább childNodes-szal szórakozok.
Mondjuk az is megjegyzendő, hogy ez az első alkalom, hogy bármi hátrányom származott volna abból, hogy a HUP nem valid XHTML ☺

int getRandomNumber() { return 4; }  // ← aláírás
//szabályos kockadobással választva. garantáltan véletlenszerű.  xkcd

subscribe

--------------------------------------------------------------------------
színes