2010-04-02 11 views
9

Cóż, po chwili drapania głowy i "huh?" próbuje dowiedzieć się, dlaczego IE będzie podczas ładowania jednego z moich stron ładowane z jQuery dobroci prosto katastrofie I zawężony sprawcę tej linii

$('div#questions').hide(); 

I kiedy mówię IE wywala, to znaczy, że całkowicie ulega awarii, próbując zrobić bzdury odzyskiwania strony, które nie powiedzie się.

Używam jQuery 1.4.2 i korzystania z IE 8 (nie testowałem z innymi wersjami)

mój obecny obejście to:

if ($.browser.msie) { 
    window.location = "http://www.mozilla.com/en-US/products/download.html"; 
} 

Z jakiegoś powodu czuję, że moje użytkowników IE nie będzie jednak bardzo zadowolony z tego rozwiązania.

Dywan ma wiele treści i innych elementów div, które są ukrywane i wyświetlane ponownie, a wszystko działa dobrze i elegancko, to tylko wtedy, gdy gigantyczny div rodzica jest ukryty, że IE zrzuca i dźga się.

Czy ktoś to napotkał lub ma jakieś możliwe wyobrażenia o tym, co dzieje się nie tak?

EDIT:

Wszystko opakowane w $ (document) .ready (function() {}); A mój kod jest wewnętrzny, więc niestety nie mogę go połączyć.

EDIT: IE 8 Kod upaść znaleźć

<ol class="actionHelp"> 
    <li>List the tasks (or actions) that are involved in your pattern along the top (one per column)</li> 
    <li>Put the starting point in the first column and the ending point in the last column.</li> 
    <li>To fill in the middle, simply ask: "What happens next?" If only one thing ever happens next, then it should get 100%. If 70% of the time one thing happens next, and 30% of the time another thing happens next, then put 70 in one box and 30 in the other.</li> 
    <li>Each row should add up to 100%</li> 
    <li>The last row is the exit and should not have any percentages in it.</li>     
</ol> 

nie mam pojęcia, dlaczego to jest przyczyną problemów w IE, ale tutaj jest CSS

.actionHelp { 
    margin: 0 0 0 20px; 
} 
.actionHelp li { 
    margin: 5px 0; 
} 

Korzystanie listę nieuporządkowaną zamiast uporządkowanej listy nie powoduje awarii, ale po ponownym przełączeniu ponownie pojawia się awaria, element ten nie musi być zamawiany. Miałem go tylko jako kroki, które mają logiczny sens, nadal chciałbym wiedzieć, dlaczego to jest dziwne obecnie IE.

Czy jQuery + IE + ukrywa element ol = OMG IE FAIL? Czy istnieje obejście?

Wydaje się mieć wpływ każdy element listy z wykazem stylu innym niż żaden

+0

Czy masz wiele elementów o tym samym identyfikatorze, wszelkiego rodzaju właściwości 'filter' w CSS tego elementu div lub czegokolwiek w nim zawartego? –

+7

+1 dla bieżącego obejścia. – SLaks

+0

@Nick, #questions to unikalny element – Jimmy

Odpowiedz

4

Twój problem z pewnością nie jest sam w sobie div#questions. Czy możesz spróbować usunąć (lub skomentować) całą zawartość div#questions i dodać każdy element z powrotem, po jednym na raz, aż IE zacznie się ponownie rozbijać?

Po znalezieniu sprawcy, wykonaj ponownie to samo dla tego elementu, usuwając całą jego zawartość i dodając każdy element z powrotem, testując po każdym z nich.

Powtarzaj tę czynność, dopóki nie znajdziesz prawdziwego źródła problemu. Wiem, że to dość nietypowe rozwiązanie, ale często jest najszybsze.

+0

Świetny pomysł, pracuję nad nim teraz – Jimmy

+0

Znalazłem winnego! zobacz ostatnią zmianę. – Jimmy

+0

Doskonale! Cieszę się, że mogłem pomóc. –

0

.hide() jest tylko nakładką na ustawieniu stylu elementy do display:none. Czy próbowałeś document.getElementById("#questions").style.display = "none" tylko po to, aby sprawdzić, czy to ma znaczenie? Może pomóc ci określić, czy jQuery powoduje konflikt.

+0

To prawda, że ​​wypróbowałem wszystkie alternatywy .hide() z jquery, ale nie w czysty sposób JavaScript! Wypróbuje teraz – Jimmy

+2

Niestety, to nadal zawiesza się IE – Jimmy

+0

@ Jimmy: jeśli jeszcze tego nie zrobiłeś, spróbuj zmienić '$ ('div # questions'). Hide();' na '$ ('div # questions'). Css ("display", "none"); ' –

1

Przejrzyj kod debuggera IE (z nieminified jQuery) i zobacz, w której linii umiera.

0

Wyłącz rozszerzenia.

To jest ekstremalnie mało prawdopodobne, że javascript jest jedynym problemem.

0

W moim przypadku był skrzypek ad-don sprawcą IE awarii na mshtml.dll.

Powiązane problemy