Przejdź


Twitter light

25 Mar 2008 @ 20:59:50 groszek 15 komentarzy

I na mnie trafiło, że mi się Twittera zachciało. Jednak nie szukam tam znajomych, tylko traktuję jako platformę do szybkich notek które mają trafić do bloga, na stronę itd. Mógłbym do tego użyć minibloga, jednak są dwa problemy. Po pierwsze, kiedyś go usunąłem i już nigdy nie był taki sam ;-). Po drugie, byłby kłopot z użyciem tego minibloga na innej stronie. Szybka rejestracja, patrzymy w ichnie html-owe widgety, później w dwa ichnie JS'y - fuj, fuj, fuj. Przepisałem najważniejszą funkcję i teraz mam Twittera bez żadnych linków ani innych syfów. Sam, czysty tekst.

Aby mieć taki efekt - trzy proste kroki. Jeden: ściągamy twitter.js aby następnie wrzucić do siebie. Dwa: umieszczamy w sekcji head:

 
<script type="text/javascript" src="/files/twitter.js"></script>
 

Trzy: umieszczamy

 
<script type="text/javascript" src="http://twitter.com/statuses/user_timeline/pupp.json?callback=twitterCallback2&amp;count=5"></script>
 

Zaraz przed zamknięciem taga body. Oczywiście zamiast pupp.json trzeba dać swojego usera. Zmienna count oznacza ilość wpisów jakie mają się pokazać. Teraz już tylko jakiś kontener (standardowo powinien to być ul o id=twitty) i gotowe.


Komentarze:

25 Mar 2008 @ 22:47:04 D4rky

umieszczanie skryptu w body jest nieeleganckie. poza tym chyba pomlila ci sie kolejnosc?

26 Mar 2008 @ 14:18:23 puppy

D4rky: Tak ma być. Skrypt w sekcji head jest mój - to implementacja funkcji, dzięki której posty z twittera zostaną wklejone do kontenera (standardowo ul z id=twitty, ale to można zmienić w skrypcie). Drugi kod jest w sekcji body, na dodatek na końcu nie bez powodu: najpierw ma się załadować cała strona, dopiero później ładujemy skrypt ze zdalnego serwera (twittera), który to skrypt wywołuje wcześniej wspomnianą funkcję, z postami itd, w formie javascriptowego obiektu jako parametrem.

26 Mar 2008 @ 20:17:40 D4rky

puppy - uhm... ale to jest niepoprawne, slyszales moze? Nie lepiej zaladowac skrypt poprzez JS?

26 Mar 2008 @ 22:46:08 puppy

Ale co tu jest niepoprawne? W sekcji head mam definicję funkcji (twitterCallback2 - w moim pliku twitter.js), która jest wywoływana później, w sekcji body, to jest przecież normalne. Wywołanie następuje w pliku js z innego serwera, ale to nic nie zmienia. Jest to ostatnia rzecz jaką przeglądarka ma zrobić, załadować wpisy Twittera - dlatego jest na końcu.
I jak miałbym ładować skrypt przez JS? o_O

26 Mar 2008 @ 22:54:24 D4rky

puppy - hm, wlasciwie to nie znam calej teorii z tej serii, ale z punktu widzenia programowania powinienes umieszczac script na poczatku dokumentu, nie w srodku. Wiem, ze tak sie powinno robic, nawet jesli nei pamietam jak.
czysty JS:
var head = document.getElementsByTagName('head')[0];
var twitter = document.createElement('script');
twitter.type = 'text/javascript';
twitter.src = 'http://twitter.com/statuses/user_timeline/pupp.json?callback=twitterCallback2&count=5';
head.appendChild(twitter);
// calosc w onload lub onDOMContentLoaded , jak uzywasz

jQuery:
$.getScript('http://twitter.com/statuses/user_timeline/pupp.json?callback=twitterCallback2&count=5');

26 Mar 2008 @ 23:06:25 puppy

Ok, tylko po co, dla wyimaginowanych wymagań 100% poprawnej semantyki? Mój sposób świetnie działa a do tego przynosi zamierzony efekt - strona się wczytuje przed postami twittera. Powtarzam - ostatni kod, _wyłącznie_ wywołuje wcześniej zdefiniowaną funkcję. Wywołuje w momencie gdy cała strona jest już załadowana.

To co tu przedstawiłem to odchudzony widget Twittera, który jest w 100% konfigurowalny - w przeciwieństwie do oryginalnego, który dokleja różne tagowe śmieci. Wcale nie trzeba tego używać tak jak przedstawiłem; to jest jednak najwygodniejszy sposób.

26 Mar 2008 @ 23:09:28 D4rky

puppy - ...dla przegladarek obslugujacych renderowanie na goraco. W IE czy Konquerorze i tak bedize trzeba czekac

26 Mar 2008 @ 23:15:19 puppy

Działa w IE (6), działa w Safari (nie mam Kq) :>
Podobnie jak działa w: Firefox, Opera, Opera mini :>

A przeglądarki które tego nie obsługują to hmm... tym bardziej nie obsłużą jQuery czy też innych "poprawnych" sposobów :-P

26 Mar 2008 @ 23:16:22 D4rky

puppy - niekoniecznie. Po prostu czekaja z renderowaniem wygladu do zaladowania kompletnej strony. A ty wpieprzasz na samiutka koncowke javascript, ktory to spowalnia. Z tego samego powodu nienawidze myblogsrologa, ktory zamula okrutnie, a nic nie wnosi

26 Mar 2008 @ 23:21:00 puppy

Wcale nie, gdy strona już się załaduje (cała) to jeszcze widzę "Ładowanie wpisów", po chwili wskakują tam wpisy z Twittera. Mam baardzo słaby internet (90% czasu to GPRS, czasem nawet gorzej - po wyczerpaniu limitu) i nie czuję żadnego spowolnienia. Testowane na w/w przeglądarkach - wszystko ok. I jeszcze pytanie - kilkadziesiąt kilobajtów jQuery czy też stosowanie DOM - pomoże? Jakoś śmiem wątpić.

26 Mar 2008 @ 23:21:50 D4rky

puppy - pomoże.

26 Mar 2008 @ 23:22:27 D4rky

puppy - aj, przepraszam. Miałem napisać, że pomóc, nie pomoże, bo różnicy żadnej. Po prostu tak bardziej elegancko. Odruchowo napisałem i i enter mi się wcisnął, wybacz ^^

26 Mar 2008 @ 23:28:07 puppy

No może i elegancko, ale mój sposób ... działa nawet na przeglądarce komórkowej i microsoftowej. I jak już mówiłem - nikt nie broni tego w inny sposób używać, wrzuciłem po prostu lepszy widget niż oryginalny ;) Co do entera - mi też się czasem palec omsknie, przydałaby się edycja komentarza/usunięcie z jabbera...

26 Mar 2008 @ 23:30:04 D4rky

puppy - raczej powiadomienie o edycji, bo co z tego, ze wyedytuje komentarz jak sledzisz z bota?

26 Mar 2008 @ 23:33:23 puppy

No to też by się przydało. Jakoś by mi się nie chciało teraz logować do swojego Dashboard by zmieniać stary komentarz :/ jakieś "#~numer_wpisu:numer_komentarza blabla" by się przydało...

Pierdol licencje, kopiuj na zdrowie!