![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 7 Pomógł: 0 Dołączył: 20.11.2010 Ostrzeżenie: (0%) ![]() ![]() |
Zbudowałem stronę, której nawigacja oparta jest na skrypcie Ajax pozwalającym wczytywać zawartość podstron do div.
Wszystko działa super, pojawia się jednak jeden problem. Skrypt działa dopiero po pełnym załadowaniu strony. Jeśli ktoś kliknie w link menu przed jej pełnym załadowaniem (jest na niej kilka elementów flash więc nie wczytuje się błyskawicznie), skrypt nie zadziała. Chciałbym np. opóźnić wyświetlenie menu do czasu aż cała strona się załaduje, albo zrobić tak, żeby linki były aktywne dopiero wtedy. Ma ktoś na to jakiś pomysł? Ten post edytował gabhel 10.12.2010, 09:04:50 |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 850 Pomógł: 120 Dołączył: 15.02.2007 Skąd: Łódź Ostrzeżenie: (10%) ![]() ![]() |
W JavaScript to może onload ale w Javie to hmmmm....
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 355 Pomógł: 50 Dołączył: 20.08.2007 Skąd: Częstochowa Ostrzeżenie: (0%) ![]() ![]() |
nałóż jakiegos spinnera na menu i w 'onload' go zdejmij
![]() -------------------- przetwornik yt na czasie :)
|
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 7 Pomógł: 0 Dołączył: 20.11.2010 Ostrzeżenie: (0%) ![]() ![]() |
W JavaScript to może onload ale w Javie to hmmmm.... Przepraszam, źle oznaczyłem przy zakładaniu tematu, już poprawiłem na JavaScript nałóż jakiegos spinnera na menu i w 'onload' go zdejmij ![]() No wydaje mi się, że tak by było dobrze, mógłbyś mi podrzucić jakiś link, bo raczej z JS to u mnie kiepsko, jeśli już muszę, to korzystam z jakiś gotowych rozwiązań i ew. delikatnie je modyfikuję, jeśli dam radę. |
|
|
![]()
Post
#5
|
|
![]() Grupa: Zarejestrowani Postów: 2 707 Pomógł: 290 Dołączył: 16.12.2008 Skąd: Śląsk Ostrzeżenie: (0%) ![]() ![]() |
Możesz w css ustawić atrybuty disabled, hidden etc., a potem np. jQuery czy czystym JS je zdjąć.
W jQ to będzie coś w stylu: Kod links.removeAttr("disabled"); links - przykładowa klasa tych przycisków. -------------------- |
|
|
![]()
Post
#6
|
|
Grupa: Zarejestrowani Postów: 7 Pomógł: 0 Dołączył: 20.11.2010 Ostrzeżenie: (0%) ![]() ![]() |
Próbowałem np. tak:
Kod <script type="text/javascript"> $(document).ready(function() { $('div').removeAttr('class'); }); </script> a div wyglądał: <div id="menu" class="klasa1">...</div> ale klasa jest usuwana jeszcze w trakcie ładowania strony. Jeśli dałbym: Kod <script type="text/javascript"> window.onload = function() { $('div').removeAttr('class'); } </script> to w ogóle nie działa. Tutaj mnie martwi jeszcze to, że w przypadku, gdy ktoś będzie miał wyłączoną obsługę JS to nigdy tego menu nie zobaczy. A może dałoby się coś zrobić z funkcją, któa wywołuje akcje - tą któa nie działa przed pełnym załadowaniem strony. Nie wiem czy na przykład zamienienie tutaj window.onload na coś innego dałoby skutek?: Kod <script type="text/javascript"> window.onload = function(){ var refreshed_content = Array('!content'); bda.transitionAlpha = false; bda.calculateText = "Wczytywanie strony..."; bda.loadText = "Wczytywanie strony..."; bda.errorText = "Niestety wystąpił błąd."; bda.externalLocation = "Niestety, nie można załadować zawartości zewnętrznej strony"; bda.historyCurrentLocation; bda.denyURLRules.push('url.contains("mailto")'); bda.imageLoadTimeout = 2; bda.imagesNotLoadedText = " "; bda.start(refreshed_content); // initiate the script } </script> Oczywiście oprócz tego krótkiego skryptu cała funkcja ma jeszcze kilka innych plikó, więc nei wiem czy tak sie da? Ten post edytował gabhel 10.12.2010, 12:12:59 |
|
|
![]()
Post
#7
|
|
![]() Grupa: Zarejestrowani Postów: 2 707 Pomógł: 290 Dołączył: 16.12.2008 Skąd: Śląsk Ostrzeżenie: (0%) ![]() ![]() |
Kod $('div.klasa1').removeAttr('disabled'); W nawiasie wpisujesz odwołania analogiczne do css (div znaczy wszyskie divy, kropka klasy, # id itd.). Bez JS menu będzie nieaktywne i dobrze bo skoro korzystasz potem z Ajaxa to i tak by nic nie zobaczył. Dodaj odpowiednią adnotacje na czerwono gdy ktoś ma wyłączony JS. Ten post edytował markonix 10.12.2010, 12:19:56 -------------------- |
|
|
![]()
Post
#8
|
|
Grupa: Zarejestrowani Postów: 7 Pomógł: 0 Dołączył: 20.11.2010 Ostrzeżenie: (0%) ![]() ![]() |
Kod $('div.klasa1').removeAttr('disabled'); Bez JS menu będzie nieaktywne i dobrze bo skoro korzystasz potem z Ajaxa to i tak by nic nie zobaczył. Dzięki za podpowiedź, ale co do powyższego to właśnie nie do końca, bo jeśli ktoś ma wyłączony JS, to skrypt na mojej stronie nie zadziała, ale nawigacja będzie możliwa awaryjnie przez zwyczajne otwieranie linków a href, tyle, że nie będzie to do końca wygodne. No, chyba mi się udało zrobić to co chciałem: Kod $(document).ready(function() { $("#menu, #footer_left").attr('style', 'visibility: hidden;'); }); $(window).load(function() { $("#menu, #footer_left").removeAttr("style"); }); </script> W każdym razie działa, jak oceniacie poprawność tego? |
|
|
![]() ![]() |
![]() |
Aktualny czas: 19.08.2025 - 13:45 |