Wiem tylko, jak to działa w Gecko (silnik renderujący Firefoksa). W tym silniku nie, nie można przenieść <object>
lub <embed>
w drzewie DOM bez ponownego ładowania powiązanego obiektu Flash. W rzeczywistości jest to coś gorszego: nie można zrobić niczego, co spowodowałoby zniszczenie obiektu Flash wykonanego za pomocą obiektu CSS. Gecko traktuje pudełka CSS jako efemeryczne; prawie każda modyfikacja DOM obejmująca poddrzewo zawierające <object>
zniszczy powiązane pudełko CSS, a więc dowolna liczba manipulacji CSS, począwszy od oczywistego (zestaw display:none
) do niejasnego (zmiana opacity
lub overflow
). Jednak stan wtyczki jest dołączony do drzewa skrzynek, a nie do drzewa DOM, więc jeśli skrzynka zostanie zniszczona i odtworzona, wtyczka zostanie przeładowana.
Zgadza się, że jest to błąd — bug 90268, dziewięć lat od tego pisania. Zobacz, w szczególności, comment 80 za naprawdę długie wyjaśnienie, dlaczego tak jest i dlaczego, niestety, nie zdziwiłbym się, gdyby minęło kolejne dziewięć lat bez naprawy.
Możliwe, że można obejść ten problem, eksportując cały stan wtyczki do JavaScript na stronie zawierającej.
AKTUALIZACJA: Dopiero dwa lata później błąd został naprawiony! Ta poprawka będzie dostępna w przeglądarce Firefox 13, która zostanie wydana w dniu 5 czerwca 2012 r .; jeśli chcesz tego wcześniej, będzie to "beta" 24 kwietnia, a "aurora" krótko po 13 marca (czyli dzisiaj). Josh Aas zasługuje na wiele zasługi za zmaganie się z tym problemem na ziemi — poprawka przeszła 54 poprawki i modyfikuje ponad 3 000 linii kodu.
Bardzo dobra odpowiedź, dziękuję za poświęcony czas ... Szczególnie podobało mi się czytanie błędu 90268! Chociaż nie jestem bliżej poruszania obiektu Flash, powiedziałbym, że znajomość takich ograniczeń jest tak samo ważna jak wiedza, co mogę zrobić *. – JKS
Nie ma za co. Wydaje mi się, że w zależności od tego, jaki jest twój większy cel, możesz uciec z kontenerem 'position: absolute', którego właściwości' top'/'left' manipulujesz z JS? – zwol
Więc, czy to jest ten konkretny problem z Gecko?Nie dzieje się tak z innymi przeglądarkami, prawda? – jayarjo