Używamy jQuery thickbox, aby dynamicznie wyświetlać ramkę iframe, gdy ktoś kliknie zdjęcie. W tym iframe, używamy Galleria javascript biblioteki wyświetlanie wielu zdjęć.
Problemem wydaje się być to, że $(document).ready
w ramce iframe wydaje się, że została uruchomiona zbyt wcześnie, a zawartość ramki iframe nie jest jeszcze ładowana, więc kod galerii nie jest poprawnie stosowany do elementów DOM. $(document).ready
zdaje się używać stanu nadrzędnego elementu iframe, aby zdecydować, czy element iframe jest gotowy.
Jeśli wyodrębnimy funkcję wywoływaną przez dokument w osobnej funkcji i wywołamy ją po upływie 100 ms. Działa, ale nie możemy ryzykować produkcji przy wolnym komputerze.
$(document).ready(function() { setTimeout(ApplyGalleria, 100); });
Moje pytanie: które zdarzenie jQuery powinniśmy powiązać, aby móc wykonać nasz kod, gdy dynamiczny iframe jest gotowy, a nie tylko rodzicem?
Odpowiedzi:
Odpowiedziałem na podobne pytanie (patrz wywołanie zwrotne JavaScript, gdy IFRAME kończy ładowanie? ). Możesz uzyskać kontrolę nad zdarzeniem ładowania iframe za pomocą następującego kodu:
W przypadku ramek iframe uznałem, że wystarczy użyć zdarzenia load zamiast zdarzenia ready document.
źródło
.load()
zdarzenie jest przestarzałe. Użyj.on( "load", handler )
zamiast tego.