8

Wpadłem na ten problem dzisiaj w IE6 (ale jest on odtwarzalny na wszystkich najnowszych wersjach IE).Nie można wykonać kodu ze zwolnionego skryptu - IE6 IE7 IE8 IE9

Zauważyłem, że kilka osób napotyka ten problem i nie widziałem bardzo praktycznego sposobu, aby to naprawić.

Wygląda na to, że istnieje inne rozwiązanie, które dotyczy zmiennej kolejności znaczników skryptu i metatagów w nagłówku dokumentu HTML. Nie potwierdzają tego jednak tutaj jest link i tak: What causes the error "Can't execute code from a freed script"

wiem też rozwiązanie tego problemu, więc jestem delegowania go poniżej

Odpowiedz

16

Przede wszystkim trzeba zlokalizować źródło wiadomości.

IE jest znany z tego, że raportuje błędne błędy, ale na szczęście IE9 wydaje się być w pewnym stopniu zdolny. Jeśli ten błąd wystąpi w IE6, IE7 lub IE8, pojawi się również w IE9, więc użyj IE9 do debugowania (dla twojego zdrowia)

Otwórz konsolę webdeveloper w IE9 (naciśnij F12) i wykonaj kolejne kroki, aby wygenerować ten błąd .

IE9 powinien teraz podać plik i wskazanie linii na konsoli, tak!

Zazwyczaj typem błędu jest wywołanie zwrotne, które jest wykonywane po pewnym opóźnieniu, przez setTimeout lub z powodu żądania Ajax. Jeśli okno, dokument lub ramka wywołania zwrotnego zostanie zdefiniowane jako rozładowane, otrzymasz ten komunikat, gdy spróbujesz wykonać funkcję zwrotną.

Pozornie inne przeglądarki ignorują ten problem, co jest dobre, jak sądzę. Aby zrobić to samo, po prostu zawiń wywołanie zwrotne w bloku try-catch (nie wiem, na co to wywołanie by się zwróciło, nie sądzę, żeby było ono niezdefiniowane). Jeśli chcesz mieć dokładniejszą obsługę błędów lub jeśli rzeczywiście chcesz podjąć działanie, kiedy to nastąpi, prawdopodobnie możesz to zrobić i proszę post tutaj, ponieważ jestem ciekawy, jakiego rodzaju przypadek użycia rzeczywiście tego wymaga.

-2

Rozwiązanie - pamiętaj o umieszczeniu wszystkich instrukcji META PRZED dowolnymi instrukcjami skryptu.

+2

Spróbuj samemu? Czy jest to skopiowane z innej strony internetowej? Nie mam żadnych metatagów i nadal otrzymuję ten błąd – Mike

0

Jeśli masz stronę, która używa kilku ramek, ten błąd może być spowodowany przez obiekty zainicjowane w jednej ramce używanej w innej ramce po usunięciu początkowej klatki ze strony.

Gdy tak się stanie, to w zależności od sytuacji, może chcesz:

  • Przeglądu kod poszukuje potencjalnego pamięci przecieki
  • Jeśli ci przedmiot stanowią niektóre dane robisz rzeczywiście chcą przekazywane między ramkami , a następnie rozważ użycie zamiast tego ich ujednoliconego formularza.
Powiązane problemy