2012-02-14 15 views
6

Sprawdziłem, co to jest. Na temat Stackoverflow jest już kilka postów na ten temat, ale wydaje się, że nie ma dla mnie odpowiedzi.Nie można uzyskać wartości nieruchomości ____: obiekt jest pusty lub nieokreślony

Podobnie jak inne posty tutaj, działa dobrze w przeglądarce Chrome lub Firefox. Ale w IE 9, 8, 7, & 6 Otrzymuję ten sam błąd. Próbowałem hack, w którym wymuszenie 9 w trybie zgodności, ale to nie rozwiązuje problemu.

Mówi się, że jeśli I - w IE 9 - wpisz na konsolę window.microstrategy.bone("W2552_Ctl").styleHelper to działa i zwraca funkcję, której potrzebuję (ten identyfikator został stworzony przez WYSIWYG, nie nienawidź mnie).

Tak, wszystko jest opakowane w $(document).ready. Tak, nie ma żadnych literówek. Nie rozumiem, dlaczego tak bardzo tego nienawidzę. Każda pomoc będzie doceniona :)

Ten kod jest prostą deklaracją zmiennej.

var ctlBone = window.microstrategy.bone(targetId + "_Ctl").styleHelper.ctlBone;

Wydaje się, że IE próbuje uzyskać dostęp do tego obiektu w prawo, potem i tam zamiast przypisać go.

+0

Możesz wyświetlić kod, który rzeczywiście powoduje błąd ... –

+0

Kod, który podnosi błąd, to po prostu deklaracja zmiennej. Nawet nic nie robi. Po prostu przypisuję zmienną. "Kod" to 'var ctlBone = window.microstrategy.bone (targetId +" _Ctl "). StyleHelper.ctlBone;'. –

+0

Czy "targetId" jest poprawne? –

Odpowiedz

6

WRESZCIE!

To był problem z funkcją setTimeout. Podobno setTimeout(function, miliseconds, param1, param2, param3); w szczególności przerwy w IE.

ŹRÓDŁO: http://arguments.callee.info/2008/11/10/passing-arguments-to-settimeout-and-setinterval/

+4

Nie było sposobu, aby powiedzieć, że używasz 'setTimeout', w oparciu o twoje pytanie. Dlatego ważne jest, aby dostarczyć nam próbki kodu. – Sharon

+3

Moje przeprosiny. Mój plik JavaScript ma ponad 1000 linii, a te dwa konkretne fragmenty są bardzo odległe. Biorąc pod uwagę moje wcześniejsze badania na ten temat, pomyślałem, że jest to specyficzna przeglądarka z IE i jak radzi sobie z obiektami, a nie z setTimeout. –

2

Proponuję nie zawijać Ci kod jquery zw $(document).ready(function(){ funkcji. Miałem również do czynienia z tym samym problemem po komentarzem, że $(document).ready(function(){ działa dobrze we wszystkich przeglądarkach, w tym IE 9 8 7.

+3

Tego typu rzeczy lepiej zostawić jako komentarz. Nie powinno Cię to zabrać zbyt długo, aby uzyskać 50 punktów reputacji, których potrzebujesz. –

1

Spróbuj ustawić przeglądarkę w trybie zgodności - Narzędzia, Ustawienia widoku zgodności i wybierz opcję Wyświetl wszystkie witryny internetowe w trybie zgodności.

Powiązane problemy