Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [js/preloader] Ładowanie skryptu przed przesłaniem innych danych
mokry
post
Post #1





Grupa: Zarejestrowani
Postów: 374
Pomógł: 23
Dołączył: 3.06.2006
Skąd: Katowice

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


Witam,
Szukałem na google i tutaj na forum ale jakoś nie bardzo mi to wyszło (IMG:http://forum.php.pl/style_emoticons/default/winksmiley.jpg)

Chodzi o następujący problem:
Jak wiadomo, podczas wysyłania treści strony do użytkownika najpierw przesyłane są teksty oraz obrazki a na końcu dopiero ładowane są skrypty JS dołączane z nagłówka head.
Chodzi mi tutaj dokładnie o przykład Lighbox'a. Uaktywnia się on dopiero po załadowaniu całej treści strony i zanim załadują się wszystie obrazki w galerii, po kliknięciu na dany obrazek, skrypt przenosi mnie do powiększenia obrazku zamiast wyświetlić go w lightbox'ie.
Czy idzie jakoś załadować bibliotek Lightboxa i inne pomocnicze zanim zostanie przesłana inna treść strony?
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
lord_t
post
Post #2





Grupa: Zarejestrowani
Postów: 603
Pomógł: 131
Dołączył: 24.07.2007
Skąd: Górny Śląsk

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


Zrób sobie plik domready.js z następującą treścią:

Kod
// Adapted from DOM Ready extension by Dan Webb
// http://www.vivabit.com/bollocks/2006/06/21/a-dom-ready-extension-for-prototype
// which was based on work by Matthias Miller, Dean Edwards and John Resig
//
// Usage:
//
// Event.onReady(callbackFunction);
Object.extend(Event, {
  _domReady : function() {
    if (arguments.callee.done) return;
    arguments.callee.done = true;

    if (Event._timer)  clearInterval(Event._timer);
    
    Event._readyCallbacks.each(function(f) { f() });
    Event._readyCallbacks = null;
    
  },
  onReady : function(f) {
    if (!this._readyCallbacks) {
      var domReady = this._domReady;
      
      if (domReady.done) return f();
      
      if (document.addEventListener)
        document.addEventListener("DOMContentLoaded", domReady, false);
        
        /*@cc_on @*/
        /*@if (@_win32)
            var dummy = location.protocol == "https:" ?  "https://javascript:void(0)" : "javascript:void(0)";
            document.write("<script id=__ie_onload defer src='" + dummy + "'><\/script>");
            document.getElementById("__ie_onload").onreadystatechange = function() {
                if (this.readyState == "complete") { domReady(); }
            };
        /*@end @*/
        
        if (/WebKit/i.test(navigator.userAgent)) {
          this._timer = setInterval(function() {
            if (/loaded|complete/.test(document.readyState)) domReady();
          }, 10);
        }
        
        Event.observe(window, 'load', domReady);
        Event._readyCallbacks =  [];
    }
    Event._readyCallbacks.push(f);
  }
});


Dołącz powyższy plik do strony.

Następnie w pliku lightbox.js zakomentuj linię (którą znajdziesz na końcu):
Kod
addLoadEvent(initLightbox);    // run initLightbox onLoad


A za nią wstaw taką:

Kod
Event.onReady(initLightbox);
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Aktualny czas: 30.09.2025 - 01:34