Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [JavaScript]Wyświetlenie/uaktywnienie menu dopiero po załadowaniu strony
gabhel
post
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
Go to the top of the page
+Quote Post
Lion_87
post
Post #2





Grupa: Zarejestrowani
Postów: 850
Pomógł: 120
Dołączył: 15.02.2007
Skąd: Łódź

Ostrzeżenie: (10%)
X----


W JavaScript to może onload ale w Javie to hmmmm....
Go to the top of the page
+Quote Post
hondek
post
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 smile.gif


--------------------
przetwornik yt na czasie :)
Go to the top of the page
+Quote Post
gabhel
post
Post #4





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 20.11.2010

Ostrzeżenie: (0%)
-----


Cytat(Lion_87 @ 9.12.2010, 21:29:18 ) *
W JavaScript to może onload ale w Javie to hmmmm....


Przepraszam, źle oznaczyłem przy zakładaniu tematu, już poprawiłem na JavaScript

Cytat(hondek @ 9.12.2010, 21:49:11 ) *
nałóż jakiegos spinnera na menu i w 'onload' go zdejmij smile.gif


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ę.
Go to the top of the page
+Quote Post
markonix
post
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.


--------------------
Go to the top of the page
+Quote Post
gabhel
post
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
Go to the top of the page
+Quote Post
markonix
post
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


--------------------
Go to the top of the page
+Quote Post
gabhel
post
Post #8





Grupa: Zarejestrowani
Postów: 7
Pomógł: 0
Dołączył: 20.11.2010

Ostrzeżenie: (0%)
-----


Cytat(markonix @ 10.12.2010, 12:18:56 ) *
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?
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 19.08.2025 - 13:45