Twitter light
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&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.
umieszczanie skryptu w body jest nieeleganckie. poza tym chyba pomlila ci sie kolejnosc?
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.
puppy - uhm... ale to jest niepoprawne, slyszales moze? Nie lepiej zaladowac skrypt poprzez JS?
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
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');
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.
puppy - ...dla przegladarek obslugujacych renderowanie na goraco. W IE czy Konquerorze i tak bedize trzeba czekac
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
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
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ć.
puppy - pomoże.
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 ^^
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...
puppy - raczej powiadomienie o edycji, bo co z tego, ze wyedytuje komentarz jak sledzisz z bota?
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...