![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 561 Pomógł: 3 Dołączył: 2.02.2009 Ostrzeżenie: (0%) ![]() ![]() |
Chodzi o to, że mam okienko ze shoutboxem które ma określoną wysokość. Dane do shoutboxa pobieram z bazy mysql, wiadomości pojawiają oczywiście jedna pod drugą. Chcialbym uzyskać coś takiego, żeby były widoczne najnowsze wiadomości, ale nie poprzez odwrotne sortowanie bazy, tylko tak jak jest na czatach.
Ten post edytował neo1986kk 13.04.2010, 08:48:00 |
|
|
![]() |
![]()
Post
#2
|
|
Developer Grupa: Moderatorzy Postów: 3 045 Pomógł: 290 Dołączył: 20.01.2007 ![]() |
Masakra, przeczytaj to jeszcze raz i zastanów się czy ktoś może się przynajmniej domyślać o co Ci chodzi.
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 561 Pomógł: 3 Dołączył: 2.02.2009 Ostrzeżenie: (0%) ![]() ![]() |
znalazlem odpowiednią frazę, jest to przesówanie histori w górę po wpisaniu wiadomości, dokladnie o to mi chodzi, jak to wykonać?
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 2 178 Pomógł: 596 Dołączył: 25.09.2009 Skąd: Piwniczna-Zdrój Ostrzeżenie: (0%) ![]() ![]() |
Przy pomocy JavaScript, a najlepiej skorzystaj z gotowego frameworka (np. jQuery). Robisz to w taki sposób, że przez AJAX-a zapisujesz wiadomość w bazie (jQuery ajax), a dodatkowo zmieniasz tylko zawartość konkretnego div-a (jQuery append). Jeżeli w shoutbox-ie ma być zawsze tyle samo wiadomości to pierwszą zawsze możesz usunąć przy pomocy odpowiedniego selektora i funkcji remove (jQuery remove). Możesz się przyglądnąć gotowym rozwiązaniom - zapytaj wujka Google o jQuery shoutbox.
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 561 Pomógł: 3 Dołączył: 2.02.2009 Ostrzeżenie: (0%) ![]() ![]() |
te shoutboxy sa jakies niekompletne ja chce tylko cos takiego jak ma nospor u siebie na stronce zeby nowa wiadomosc pojawiała się na dole a reszta szła do góry.
|
|
|
![]()
Post
#6
|
|
Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
dopisujesz wiadomosc na koncu (append) a nastepnie przewijasz scroll w dół.
|
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 561 Pomógł: 3 Dołączył: 2.02.2009 Ostrzeżenie: (0%) ![]() ![]() |
to ze na końcu to chyba nie ma znaczenia bo nie pobieram z txt tylko ze sql. ale własnie jak ustawić scrolla zeby był zawsze na dole?
|
|
|
![]()
Post
#8
|
|
Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Cytat to ze na końcu to chyba nie ma znaczenia bo nie pobieram z txt tylko ze sql No ma. Jakbys wstawial na początku to by nie dzialało tak jak chcesz. A to ze z sql czy skąds indziej - co ma piernik do wiatraka? Masz wstawiac na koncu i tyle nie zależnie od źródla danych. Takze dobrze ze wkladasz na koncu (IMG:style_emoticons/default/smile.gif) Cytat ale własnie jak ustawić scrolla zeby był zawsze na dole? Kod obj.scrollTop = obj.scrollHeight; gdzie obj to obiekt DOM twojego diva ze scrollem |
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 561 Pomógł: 3 Dołączył: 2.02.2009 Ostrzeżenie: (0%) ![]() ![]() |
a jeszcze jak już jesteśmy tutaj to chcialbym się zapytać o to jak to zrobić żeby kursor (znak karetki) zawsze był w polu textarea, może inaczej żeby zawsze textarea było aktywne
|
|
|
![]()
Post
#10
|
|
Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
jak to "zawsze"? Jak ktoś kliknie na inne pole na stronie to też textarea ma byc nadal aktywne?
Ustaw focus na textarea i na dzien dobry ci sie kursor w nim ustawi |
|
|
![]()
Post
#11
|
|
Grupa: Zarejestrowani Postów: 561 Pomógł: 3 Dołączył: 2.02.2009 Ostrzeżenie: (0%) ![]() ![]() |
nie nie, po kliknięciu ENTER żeby kursor był na textarea tak jak jest u ciebie że pisze wiadomość naciskam enter i pisze nastepna bez klikania na pole
|
|
|
![]()
Post
#12
|
|
Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
U mnie nie ma textarea a input. W input enter nie powoduje przejscia do nowej linii. Skoro wiec ty nie chcesz nowej linii to na grzyba textarea dajesz?
|
|
|
![]()
Post
#13
|
|
Grupa: Zarejestrowani Postów: 561 Pomógł: 3 Dołączył: 2.02.2009 Ostrzeżenie: (0%) ![]() ![]() |
w sumie to masz racje, ale jak to zrobić żeby po napisaniu wiadomości pole było aktywne czyli tak jak napisałeś te focus ja zrobiłem coś takiego
ale cos nie bardzo to praży sorry już wiem document.getElementById('mojatextarea').focus(); Ten post edytował neo1986kk 14.04.2010, 07:59:43 |
|
|
![]()
Post
#14
|
|
Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
focus to funkcja.
nie focus a focus() |
|
|
![]()
Post
#15
|
|
Grupa: Zarejestrowani Postów: 561 Pomógł: 3 Dołączył: 2.02.2009 Ostrzeżenie: (0%) ![]() ![]() |
jednak jeszcze jedną rzecz bym chciał zmienić o ile się da. Bo to odświeżanie co 3 sek jest fajne dopóki nie zachciało mi się zaznaczać tekstu po odswieżeniu poprostu zaznaczenie znika i nie zdąże nacisnąć crt+c zeby skopiować. chciałbym aby te wiadomości pojawiały się na troche innych zasadach, ale chyba musi być to odświeżanie bo jak inaczej?
|
|
|
![]()
Post
#16
|
|
Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
tak to jest jak pod pojęciem odswiezania rozumie sie pobieranie wszystkiego na nowo (IMG:style_emoticons/default/winksmiley.jpg)
domysl sie teraz co mam na mysli (IMG:style_emoticons/default/smile.gif) |
|
|
![]()
Post
#17
|
|
Grupa: Zarejestrowani Postów: 561 Pomógł: 3 Dołączył: 2.02.2009 Ostrzeżenie: (0%) ![]() ![]() |
prawdopodobnie masz na myśli asynchroniczny dostęp do mojego diva, ale przecież wyświetlanie asynchroniczne do mojego diva to nie jest nic innego jak odświeżenie diva
|
|
|
![]()
Post
#18
|
|
Grupa: Zarejestrowani Postów: 2 178 Pomógł: 596 Dołączył: 25.09.2009 Skąd: Piwniczna-Zdrój Ostrzeżenie: (0%) ![]() ![]() |
AJAX ma w tym shoutbox-ie jedynie zapisać dane (wiadomości, nicki, czas, itp.) do bazy. Dane są zapisywane do bazy po to, aby osoba która dopiero co wejdzie na stronę mogła zobaczyć czego tyczą się rozmowy. Dane są z bazy pobierane tylko przy pierwszym wejściu na stronę. Natomiast za wyświetlanie kolejnych wiadomości bez przeładowania strony odpowiada JavaScript. Najprostszy przykład:
Takie coś należy tylko wzbogacić o AJAX-a, który będzie zapisywał "Kolejną linijkę tekstu<br />" do bazy danych. EDIT: Oczywiście zamiast innerHTML powinniśmy użyć jakiejś funkcji (metody), która wstawi nam np. tylko określoną linijkę (wszystko zależy od tego, jak te "kolejne linijki" są wyświetlane). Ogólnie chodzi o to, że w powyższym kodzie nie używam AJAX-a, choć modyfikuje treść. Ach. Drobna wtopa. AJAX jest również wykorzystywany, do pobierania nowych wiadomości (np. co 30 sekund), ale wiadomości te mają już być dopisane do shoutbox-a w taki sposób, o jakim wspomniałem. Ten post edytował mortus 14.04.2010, 11:56:42 |
|
|
![]()
Post
#19
|
|
Grupa: Zarejestrowani Postów: 561 Pomógł: 3 Dołączył: 2.02.2009 Ostrzeżenie: (0%) ![]() ![]() |
a po co tu ten <a href...> chciałeś mi pokazać ze wywolujesz funkcje ale ja moge sobie to zastąpić interval() czy potrzebne to jest?
|
|
|
![]()
Post
#20
|
|
Grupa: Zarejestrowani Postów: 2 178 Pomógł: 596 Dołączył: 25.09.2009 Skąd: Piwniczna-Zdrój Ostrzeżenie: (0%) ![]() ![]() |
To jest tylko przykład, choć może nie najlepszy. Oczywiście możesz skrypt wywoływać zaraz po załadowaniu strony, co określony czas (i wtedy wykorzystujesz setInterval). Wszystko zależy od Twojej inwencji.
Ale jeśli nadal masz jakiś problem, to najlepiej zrobisz, jak pokażesz kod. Możesz też wrzucić całość na serwer i podesłać link. Zobaczymy, czy działa i czego jeszcze brakuje. |
|
|
![]() ![]() |
![]() |
Aktualny czas: 22.08.2025 - 15:25 |