Chcę, aby strony internetowe przesuwały się płynnie jeden po drugim. Zrobiłem $ ("a"). Click(); funkcja, która sprawdza, czy link jest lokalny, i czy dostaje link href i ładuje go do treści.jQuery .load() Poczekaj, aż zawartość zostanie załadowana.
$('a').click(function(){
var href=$(this).attr('href');
$('body').load(href);
return false;
});
Wygląda ładnie, ale moja strona zawiera także wiele wtyczek js. Wykonanie ich zajmuje trochę czasu, a akcja .load
pokazuje najpierw zawartość "niezmienioną przez js", a następnie js. Powoduje zły flickr treści.
Czy możliwe jest buforowanie nowych treści za pomocą wszystkich opcji JS, czy nie zmienia się starego ciała, dopóki nie zostanie zrobione, a kiedy wszystkie DOM i JS zostaną wykonane na NOWEJ zawartości, odsuwają starą zawartość i przesuwają się w nowej?
edytuj: Myślę, że nie chodzi o wykrywanie wykonania js, ale o sprawdzenie, czy wszystkie dodatkowe pliki są załadowane - zmiana DOM powinna zostać uruchomiona w tym samym czasie, w którym będzie $ (okno) .load nowego pliku.
[Edycja] ------------------------------------------ ----------------------------
Moje rozwiązanie tego był kodu css (CSS jest ładowany zawsze przed dom jest zbudowany) o nieprzezroczystości dla różnych przeglądarek 0.
.transparent{
-moz-opacity: 0.00;
opacity: 0.00;
-ms-filter:"progid:DXImageTransform.Microsoft.Alpha"(Opacity=0);
filter: progid:DXImageTransform.Microsoft.Alpha(opacity=0);
filter:alpha(opacity=0);
}
Zapobiega to zwykle złemu pomrukowi treści, ale nie zawsze. Teraz jest możliwe, aby wykryć, że zawartość jest ładowana przez jQuery ajax i zastosować pewien czas oczekiwania na show i tak dalej. Ale w rzeczywistości pytanie wciąż jest otwarte.
Aby teraz trochę bardziej prosty przykład na to pytanie.
Jak zacząć zmieniając DOM po $ („ciało”) obciążenia („something.php”) 3000ms po kliknięciu na link, który .load ogień ("something.php") działa? (Ładowanie należy rozpocząć natychmiast po kliknięciu, ale DOM zmiana musi być rozpoczynane później)
obciążenie ma zwrotnego że czeka na żądania ajax do wypełnienia, które można wykorzystać, a to wszystko w [** ** docs ] (http://api.jquery.com/load/), jeśli twoje wtyczki mają podobne wywołania zwrotne, możesz je również wykorzystać, w przeciwnym razie przekroczenie limitu czasu jest prawdopodobnie najłatwiejszym rozwiązaniem. – adeneo