Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [js] Poszukuję dobrego, sprawdzonego...
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
code46
Cześć,
szukam jakiegoś dobrego, szybkiego i sprawdzonego frameworka do JS+AJAX. Słyszałem o jQuery - dobry jest? Ważna jest także prostota bo nie znam JS.
Cezar708
Cytat(code46 @ 16.03.2008, 14:24:06 ) *
Cześć,
szukam jakiegoś dobrego, szybkiego i sprawdzonego frameworka do JS+AJAX. Słyszałem o jQuery - dobry jest? Ważna jest także prostota bo nie znam JS.


jQuery fajny jest.. ale prawda jest taka, że pytanie zadałeś zbyt ogólnie, nie wiem czego dokładnie potrzebujesz (efektów, tylko komunikacji, prostych przejść?)

inne fajne biblioteki:
  1. prototype
  2. advAjax

pozdrawiam
Piniek
mootools winksmiley.jpg
code46
A co myślicie o jQuery?

Poszukuję skryptu, który przyciemniałbym całe okno przeglądarki - podczas logowania wysyłam postem (nie ajaxem) dane (login i hasło) i na czas wysyłania ekran jest przyciemniany. Na pewno wiecie o co chodzi.
janek1230
Kiedyś używałem mootools i jQuery, i z jQuery byłem bardziej zadowolony, napewno jest szybszy od mootools...który jak dla mnie to powolnie działał...
Piniek
wedlug testow w phpsolutions to mootools jest najszybszy a jquery najwolniejszy i to 3 razy a prototype jes posrodko troszeczke za mootols
janek1230
Co do innych to nie wiem, ale ja z tych 2-ch (mootools & jQuery) wziął bym jQuery...

PS.W testach czasami piszą różne rzeczy tongue.gif
code46
A wiecie może jak za pomocą JS wykonać takie przyciemnianie ekranu (dosyć często stosowane w galeriach zdjęć)?
siemakuba
Jeżeli chodzi o bibliotekę to zdecydowanie polecam jQuery. Co do testów szybkości, to ma spore znaczenie świeżość tych testów. Szybkość jQuery wraz z każdym kolejnym wydaniem wzrasta o setki procent, więc o to bym się nie bał. Do tego IMHO intuicyjność i prostota tej biblioteki jest bez porównania. Dokładając do tego masę pluginów - jest to na pewno rozwiązanie warte sprawdzenia.

pozdr.
code46
Dziękuje za odpowiedzi. Jeśli chodzi o ten efekt, to nie chciałbym wykorzystywać do tego jQuery albo ThickBox'a tylko bardzo prosty skrypt.

Chciałbym na stronie utworzyć nową warstwę, która przykrywałaby wygląd strony (ciemniejszy kolor, przeźroczysty) a po środku wsadzić jakiegoś animowanego gif - ładowanie się strony). Podobne do tego tutaj http://jquery.com/demo/thickbox/ - zakładka examples (demo).

Problem w tym, że tam kod jest zagmatwany a ja nie potrzebuję całych bibliotek tylko proste dwie funkcje - otwieranie takiego overlay'a i chowanie.
siemakuba
1. napisz style odpowiednie dla tego DIVa, który będzie wszystko zakrywał - zwróć uwagę na: position, z-index, top, left, width, height, display
2. początkowo niech ma display:none;
3. umieść go zaraz za body w kodzie HTML
4. zmieniaj widoczność za pomocą JS zmieniając właściwość display
Kod
function toggleOverlay()
{
    var eDIV = document.getElementById('overlay');
    if(eDIV.style.display == 'none')
    {    eDIV.style.display = 'block';
    }
    else
    {    eDIV.style.display = 'none';
    }
}

4. jak chcesz uzyskać efekt półprzeźroczystości, musisz zadowolić niestety każdą z przeglądarek indywidualnie, aplikując odpowiedni CSS dla elementu:
Kod
IE: filter:alpha(opacity=50)
FF: -moz-opacity:0.5
Opera: opacity: 0.5

Powinno działać, ale wcale nie musi, jako że nie testowałem tego ;)

pozdr.
code46
Próbuję coś naskrobać i nawet pomysł fajny. Nawet uda mi się chyba wsadzić obrazek ładowania. Tylko mam trzy problemy:
1) Dla diva, który będzie zasłaniaj, w cssie muszę podać width i height ale ile podać, żeby zasłaniaj 100% strony w szerokości i wysokości i ani ciut więcej? Bo inaczej to będzie mało eleganckie
2) Do pozycjonowania elementów używam pływania, bo position często się rozjeżdża przy zmianach rozdzielczości. Jak Twój sposób wpłynie na pływanie innych elementów?
3) Jak zrobić aby po zasłonięciu ekranu(całej strony) nie można była nic klikać na stronie dopóki jej nie "odsłonię"?
Jarod
Cytat(code46 @ 17.03.2008, 23:03:23 ) *
Próbuję coś naskrobać i nawet pomysł fajny. Nawet uda mi się chyba wsadzić obrazek ładowania. Tylko mam trzy problemy:
1) Dla diva, który będzie zasłaniaj, w cssie muszę podać width i height ale ile podać, żeby zasłaniaj 100% strony w szerokości i wysokości i ani ciut więcej?


  1. width: 100%;
  2. height: 100%;


Ale pod IE 6.0 nie działa niestety.
siemakuba
Cytat(code46 @ 17.03.2008, 23:03:23 ) *
1) Dla diva, który będzie zasłaniaj, w cssie muszę podać width i height ale ile podać, żeby zasłaniaj 100% strony w szerokości i wysokości i ani ciut więcej? Bo inaczej to będzie mało eleganckie
tak jak pisze @Jarod - 100%. A żeby działało w IE6, dodaj jeszcze w JS: eDIV.style.height = document.body.scrollHeight+'px'; - będziesz miał dobrze w IE6 i wszędzie indziej.

Cytat(code46 @ 17.03.2008, 23:03:23 ) *
2) Do pozycjonowania elementów używam pływania, bo position często się rozjeżdża przy zmianach rozdzielczości. Jak Twój sposób wpłynie na pływanie innych elementów?
nie powinno wpływać wogóle. W tym divie nie wsadzasz treści strony, tylko sam pusty DIV (no ewentualnie plus to co w nim chcesz mieć)

Cytat(code46 @ 17.03.2008, 23:03:23 ) *
3) Jak zrobić aby po zasłonięciu ekranu(całej strony) nie można była nic klikać na stronie dopóki jej nie "odsłonię"?
po zasłonięciu nic co jest pod tą warstwą nie powinno być klikalne.

pzodr.
code46
Cytat(siemakuba @ 17.03.2008, 23:26:12 ) *
nie powinno wpływać wogóle. W tym divie nie wsadzasz treści strony, tylko sam pusty DIV (no ewentualnie plus to co w nim chcesz mieć)

Próbowałem oprócz dodatkowego diva zrobić takie coś dla body ale jest kicha. Bez dodatkowego diva nie obejdzie się.
Ostatnie pytanie. Jak wyśrodkować w pionie i poziomie gif w takim divie. Przeźroczysta "zasłona" a po środku animowany gif (ładowanie strony)?
Cytat(siemakuba @ 17.03.2008, 23:26:12 ) *
po zasłonięciu nic co jest pod tą warstwą nie powinno być klikalne.
pzodr.

Sprawdzę i dam znać. Dziękuje.
siemakuba
Cytat(code46 @ 17.03.2008, 23:31:51 ) *
Ostatnie pytanie. Jak wyśrodkować w pionie i poziomie gif w takim divie. Przeźroczysta "zasłona" a po środku animowany gif (ładowanie strony)?


Najlepiej dać go jako obrazek tła via CSS:
Kod
background:url('obrazek.gif') no-repeat 50% 50% #000;


pozdr.
code46
Cytat(siemakuba @ 17.03.2008, 23:45:16 ) *
Najlepiej dać go jako obrazek tła via CSS:
Kod
background:url('obrazek.gif') no-repeat 50% 50% #000;


pozdr.

Niestety to nie działa.
siemakuba
Nie działa - domyślam się że nie wyświetla się obrazek. Domyślam się też, że ścieżka do obrazka jest niepoprawna.
Proponuję wsadzić obrazek dla testu w katalogu głównym i podać do niego adres bezwzględny w CSS:
Cytat
background:url('http://www.example.com/obrazek.gif');

pozdr.
Jarod
Z tym obrazkiem to zrobiłbym tak.
  1. background-image: url('../Images/loading.gif');
  2. width: 100px;
  3. height: 20px;
  4. top: 50%; left: 50%;
  5. position: absolute;



@siemakuba: Ja mam do Ciebie pytanie, bo sam zamierzam wykorzystać sposób, który podałeś. Chodzi mi o kod
Kod
eDIV.style.height = document.body.scrollHeight+'px';

który niestety nie działa tak jak potrzeba. Znalazłem następujące problemy:

1) Brak pionowego suwaka przewijania (mała ilość tekstu)
- Opera: ok
- FF: W pionie nie dociąga do końca overlay'a
- IE 6.x: W poziomie nie działa 100% (nie dociąga overlay'a do końca strony), podobnie jak w pionie (wielkość niedociągnięcia różni się od tej w FF

2) Pojawia się pionowy pasek (duża ilość tekstu)
- Opera: ok
- FF: nie dociąga w pionie overlay'a do końca strony
- IE 6.x: W poziomie nie działa 100% (nie dociąga overlay'a do końca strony), podobnie jak w pionie (wielkość niedociągnięcia różni się od tej w FF

Podrzucić screeny?

Pozdrawiam
siemakuba
@Jarod: widzisz, wpadłem na taki pomysł i na szybko przetestowałem na stronie gdzie był scroll pionowy. Wyszło na pierwszy rzut oka, że jest OK, więc dalej się nie wgłębiałem.
Trzeba by pewnie potestować co będzie poprawne dla której przeglądarki, bo do wyboru mamy innerHeight / scrollHeight / offsetHeight / style.height i jeszcze pewnie coś by było.

To z kolei prowadzi nas do sedna tego właśnie wątku - użycia biblioteki, która to wie i wybierze za nas co potrzeba.
Jak pisałem korzystam z jQuery i szczerze polecam. Ale mi się nie chce już walczyć, ja chcę żeby było wygodnie, szybko i dobrze ;)

pozdr.
Jarod
Cytat(siemakuba @ 18.03.2008, 16:51:04 ) *
Trzeba by pewnie potestować co będzie poprawne dla której przeglądarki, bo do wyboru mamy innerHeight / scrollHeight / offsetHeight / style.height i jeszcze pewnie coś by było.

Rozumiem. Gdzię znajdę spis wszystkich tych znaczników? I nawet jeśli dopasuję kilka poprawnie działających to jak zapisać warunki dla każdej przeglądarki osobno?

Cytat(siemakuba @ 18.03.2008, 16:51:04 ) *
To z kolei prowadzi nas do sedna tego właśnie wątku - użycia biblioteki, która to wie i wybierze za nas co potrzeba.
Jak pisałem korzystam z jQuery i szczerze polecam. Ale mi się nie chce już walczyć, ja chcę żeby było wygodnie, szybko i dobrze winksmiley.jpg

Niby tak, ale:
-zmuszasz się do wrzucania całości do swojego projektu
-jquery umie tylko chyba obrazki (galerię zdjęć) w ten sposób wyświetlać.

Będziesz tak miły i podasz linka do dokumentacji, gdzie jest opisane zastosowanie takiego rozwiązania?

pzdr
Jarod
Cytat(siemakuba @ 18.03.2008, 16:58:46 ) *
@Jarod, poczekasz do wieczora? Nie dam rady teraz winksmiley.jpg
pozdr.

Oczywiście

Mam coś takiego ale pod każdą przeglądarką wygląda inaczej... Macie jakieś pomysły?

  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pl" lang="pl">
  3. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  4. <meta http-equiv="Content-Language" content="pl" />
  5. <meta name="Robots" content="all" />
  6. <meta name="Pragma" content="no-cache" />
  7. <meta name="Cache-Control" content="no-store, no-cache, must-revalidate" />
  8.  
  9. <link rel="stylesheet" href="overlay.css" type="text/css" />
  10. </head>
  11. <body onload="document.getElementById('loading').style.height=document.body.scrollHeight+'px';document.getElementById('loading').style.width=document.body.offsetWidth+'px';">
  12.  
  13. <?php
  14. echo '<div id="loading"></div>';
  15.  
  16. echo '<div id="test">';
  17. //echo '<div id="test" style="width: 100px;">';
  18. ?>
  19. What is Lorem Ipsum? Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum. Why do we use it? It is a long established fact that a reader will be distracted by the readable content of a page when looking at its layout. The point of using Lorem Ipsum is that it has a more-or-less normal distribution of letters, as opposed to using 'Content here, content here', making it look like readable English. Many desktop publishing packages and web page editors now use Lorem Ipsum as their default model text, and a search for 'lorem ipsum' will uncover many web sites still in their infancy. Various versions have evolved over the years, sometimes by accident, sometimes on purpose (injected humour and the like). Where does it come from? Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of "de Finibus Bonorum et Malorum" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, "Lorem ipsum dolor sit amet..", comes from a line in section 1.10.32.
  20. What is Lorem Ipsum? Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum. Why do we use it? It is a long established fact that a reader will be distracted by the readable content of a page when looking at its layout. The point of using Lorem Ipsum is that it has a more-or-less normal distribution of letters, as opposed to using 'Content here, content here', making it look like readable English. Many desktop publishing packages and web page editors now use Lorem Ipsum as their default model text, and a search for 'lorem ipsum' will uncover many web sites still in their infancy. Various versions have evolved over the years, sometimes by accident, sometimes on purpose (injected humour and the like). Where does it come from? Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of "de Finibus Bonorum et Malorum" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, "Lorem ipsum dolor sit amet..", comes from a line in section 1.10.32.
  21. <?php
  22. echo '</div>';
  23.  
  24. ?>
  25.  
  26. </body>
  27. </html>



  1. html, body, * {
  2. font-size: 12px;
  3. }
  4.  
  5. div#loading {
  6. color: #000000;
  7. background-color: #000000;
  8. position: absolute;
  9. top: 0px;
  10. left: 0px;
  11. z-index: 10000;
  12. filter: alpha(opacity=70);
  13. -moz-opacity: 0.7;
  14. opacity: 0.7;
  15. }


Jak nie ma pionowego suwaka przewijania to wogóle lipa.
siemakuba
Cytat(Jarod @ 18.03.2008, 16:54:55 ) *
Rozumiem. Gdzię znajdę spis wszystkich tych znaczników? I nawet jeśli dopasuję kilka poprawnie działających to jak zapisać warunki dla każdej przeglądarki osobno?

Np. tu:
http://developer.mozilla.org/en/docs/Gecko_DOM_Reference
http://msdn2.microsoft.com/en-us/library/m...055(VS.85).aspx
Cytat(Jarod @ 18.03.2008, 16:54:55 ) *
Niby tak, ale:
-zmuszasz się do wrzucania całości do swojego projektu
-jquery umie tylko chyba obrazki (galerię zdjęć) w ten sposób wyświetlać.

Będziesz tak miły i podasz linka do dokumentacji, gdzie jest opisane zastosowanie takiego rozwiązania?


Wrzucenie całości jQuery? To niewielkie obciążenie dla transferu - wersja spakowana to niecałe 30kb.
Czy umie tylko obrazki? Nie doceniasz ;) http://jquery.com/demo/thickbox/

pozdr.
NoiseMc
Zobacz tutaj metode getHeight () i jak wykorzystuje ja w showLoading () moze pomoc z ustalaniem wysokosci okna

http://www.laurarosephotography.com/javasc.../Ajax/common.js


BTW ... po co echo-ujesz HTML ?
Jarod
Cytat(siemakuba @ 19.03.2008, 01:04:31 ) *
Np. tu:
http://developer.mozilla.org/en/docs/Gecko_DOM_Reference
http://msdn2.microsoft.com/en-us/library/m...055(VS.85).aspx
Wrzucenie całości jQuery? To niewielkie obciążenie dla transferu - wersja spakowana to niecałe 30kb.
Czy umie tylko obrazki? Nie doceniasz winksmiley.jpg http://jquery.com/demo/thickbox/

pozdr.

Te strony to widziałem - myślałem, że jest coś więcej. Co do thickbox'a to także widziałem. Chciałem sam ugryźć temat. Dzięki za poświęcony czas winksmiley.jpg


Cytat(NoiseMc @ 19.03.2008, 05:22:46 ) *
Zobacz tutaj metode getHeight () i jak wykorzystuje ja w showLoading () moze pomoc z ustalaniem wysokosci okna

http://www.laurarosephotography.com/javasc.../Ajax/common.js
BTW ... po co echo-ujesz HTML ?


@NoiseMc: Ten skrypcik co podałeś, działa super w FF, jak się doda dodatkowo 30px do wyniku pageHeight (return pageHeight+30;) to działa dobrze w IE. Natomiast Opera kaszani się (na dole zostaje około centymetr białego paska - niezasłoniętego).

Co do drugiego Twojego pytania.. Kod, który podawałem skopiowałem ze skryptu, żeby nie pisać od początku. Trafiłem na skrypt, w którym dużo warunków za pomocą php jest sprawdzanych, a tam gdzie większość kodu generowana w php nie wychodzę z php tylko treść wyświetlam za pomocą echo - podobno lepiej wyświetlać strukturę (czyt. szybciej) dokumentu za pomocą echo niż otwierać i zamykać często sekcję php (<?php ?>).




ROZWIĄZANIE PROBLEMU:
index.php
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="pl" lang="pl">
  3. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  4. <meta http-equiv="Content-Language" content="pl" />
  5. <meta name="Robots" content="all" />
  6. <meta name="Pragma" content="no-cache" />
  7. <meta name="Cache-Control" content="no-store, no-cache, must-revalidate" />
  8.  
  9. <link rel="stylesheet" href="index.css" type="text/css" />
  10. <!--[if gte IE 6]><link rel="stylesheet" href="index_ie.css" type="text/css" /><![endif]-->
  11.  
  12. </head>
  13.  
  14. <div id="loader"></div>
  15. <!-- DODATKOWY BLOK POTRZEBNY DLA IE ŻEBY NIE IGNOROWAŁ MARGINESÓW !!! -->
  16. <div>
  17. <div id="content">
  18. What is Lorem Ipsum? Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book. It has survived not only five centuries, but also the leap into electronic typesetting, remaining essentially unchanged. It was popularised in the 1960s with the release of Letraset sheets containing Lorem Ipsum passages, and more recently with desktop publishing software like Aldus PageMaker including versions of Lorem Ipsum. Why do we use it? It is a long established fact that a reader will be distracted by the readable content of a page when looking at its layout. The point of using Lorem Ipsum is that it has a more-or-less normal distribution of letters, as opposed to using 'Content here, content here', making it look like readable English. Many desktop publishing packages and web page editors now use Lorem Ipsum as their default model text, and a search for 'lorem ipsum' will uncover many web sites still in their infancy. Various versions have evolved over the years, sometimes by accident, sometimes on purpose (injected humour and the like). Where does it come from? Contrary to popular belief, Lorem Ipsum is not simply random text. It has roots in a piece of classical Latin literature from 45 BC, making it over 2000 years old. Richard McClintock, a Latin professor at Hampden-Sydney College in Virginia, looked up one of the more obscure Latin words, consectetur, from a Lorem Ipsum passage, and going through the cites of the word in classical literature, discovered the undoubtable source. Lorem Ipsum comes from sections 1.10.32 and 1.10.33 of "de Finibus Bonorum et Malorum" (The Extremes of Good and Evil) by Cicero, written in 45 BC. This book is a treatise on the theory of ethics, very popular during the Renaissance. The first line of Lorem Ipsum, "Lorem ipsum dolor sit amet..", comes from a line in section 1.10.32.
  19. To jest przykładowy tekst
  20. </div>
  21. </div>
  22.  
  23. </body>
  24. </html>


index.css
  1. div#loader {position: fixed; top:0px; left:0px; background: #000000; width:100%; height:100%; z-index:9999;
  2. filter:alpha(opacity=60); -moz-opacity:0.6; opacity: 0.6;}
  3.  
  4. div#content {margin: 30px auto 0 auto; width: 200px; min-height: 500px; height: auto; color: #000000;
  5. background-color: red;}


index_ie.css
  1. body { margin: 0; padding:0; width: 100%; height:100%; overflow-y:auto;}
  2. html {overflow-x:auto; overflow-y:hidden;}
  3. * html div#loader {position:absolute;}



Działa pod FF, Operą i IE. Stawiam wirtualnego browarka dla tego kto potrafi mi wytłumaczyć, dlaczego ten dodatkowy blok <div> w kodzie index.php jest potrzebny, aby IE nie olewał marginesów? winksmiley.jpg

Pozdrawiam
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.