2010-09-15 10 views
5

Mam dziwne zachowanie w IE8, które wydaje się być błędem IE, ale nie jestem pewien. Podczas uzyskiwania dostępu do pola currentStyle z elementu zwraca wartość null. Jeśli wyświetlam jego właściwości w oknie oglądania, widzę, że jest on zdefiniowany i mogę wyświetlić jego członków. Wygląda na to, że jeśli wywołasz atrybuty przed ręką, to zwróci poprawny currentStyle. Zastanawiam się, czy ktoś widział to zachowanie przed i zna niektóre obejścia. Dzieje się tak podczas konstruowania siatki dojo. Nie mogę też przesłonić tego zachowania JavaScript, ponieważ jest ono głęboko ukryte w zewnętrznej bibliotece JavaScript (dojo) i nie mam dostępu do tej funkcji w pierwszej kolejności do nadpisania (funkcja jest zdefiniowana w innym zakresie funkcji).Dziwne zachowanie IE: currentStyle zwraca zero

+0

Masz na myśli 'currentStyle' lub' currentStyles'? –

+0

oops mam na myśli currentStyle – Bishnu

+0

Zasadniczo nie ma sensu uzyskać dostępu do 'currentStyle', dopóki element nie zostanie dodany do dokumentu (co spowoduje, że właściwość będzie dostępna). – bobince

Odpowiedz

2

Obiekt currentStyle w IE jest asynchroniczny. Oznacza to, że nie można ustawić stylów i natychmiast je zapytać. Musisz pozwolić IE działać zgodnie z twoją manipulacją, gdy JavaScript skończy wprowadzanie zmian. Możesz ustawićTimeout na 0 milisekund, które wciągną wywołanie funkcji do kolejki, a IE wykona zmiany DOM przed wywołaniem następnego fragmentu JavaScript.