2010-04-02 10 views
9

Bien después de un rato de rascarse la cabeza y decir "¿eh?" tratando de averiguar por qué IE sería hacia arriba accidente cuando se carga una de mis páginas cargadas con jQuery bondad, te reducido el culpable de esta línea

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

Y cuando digo IE se bloquea, quiero decir que se bloquea totalmente, en un intento hacer su tontería de recuperación de página web que falla.

Me postulo jQuery 1.4.2 y usar el IE 8 (no se han probado con otras versiones)

mi solución actual es la siguiente:

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

Por alguna razón siento que mis usuarios de IE no estará muy contento con esta solución sin embargo.

El div en cuestión tiene un montón de contenido y otros divs que se ocultan y se muestran de nuevo, y todo eso funciona muy bien, solo cuando el div gigante padre se oculta que IE se desconecta y apuñala a sí mismo.

¿Alguien ha encontrado esto o tiene alguna idea posible de lo que está pasando mal?

EDIT:

Todo está envuelto en el $ (document) ready (function() {}); Y mi código es todo interno, así que no puedo vincularlo desafortunadamente.

EDIT: IE 8 Código estrellarse encontrado

<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> 

no tengo ni idea de por qué esto está causando problemas en IE pero aquí está el CSS

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

Usando una lista desordenada en lugar de una lista ordenada no choca, pero una vez que lo vuelvo a conectar, vuelvo a tener fallas, este elemento no necesita ser ordenado. Lo tenía allí como pasos que tienen un sentido lógico. Me gustaría saber por qué esto está volviendo loco. fuera IE.

¿jQuery + IE + esconde un elemento ol = OMG IE FAIL? ¿O hay una solución alternativa?

Parece ser afectada cualquier elemento de la lista con un estilo de lista que no sea ninguno

+0

¿Tiene varios elementos con la misma ID, cualquier tipo de propiedades 'filter' en el CSS en ese div o algo en el mismo? –

+7

+1 para la solución actual. – SLaks

+0

@Nick, # preguntas es un elemento único – Jimmy

Respuesta

4

Su problema obviamente no es div#questions sí mismo. ¿Puedes intentar eliminar (o comentar) todos los contenidos de div#questions y volver a agregar cada elemento, uno a la vez, hasta que IE vuelva a fallar?

Una vez que haya encontrado el culpable, haga lo mismo nuevamente para ese elemento, eliminando todo su contenido y volviendo a agregar cada elemento, probando después de cada uno.

Siga haciendo esto hasta que encuentre la verdadera fuente del problema. Sé que esta es una solución bastante de baja tecnología, pero a menudo también es la más rápida.

+0

Una gran idea, trabajando en ella ahora – Jimmy

+0

¡Encontré al culpable! ver la última edición. – Jimmy

+0

¡Excelente! Me alegro de poder ayudar. –

0

.hide() es sólo un envoltorio para seleccionar el estilo de los elementos a display:none. ¿Has probado document.getElementById("#questions").style.display = "none" solo para ver si eso hace alguna diferencia? Podría ayudarlo a determinar si jQuery está causando un conflicto.

+0

Cierto, había probado todas las alternativas de .hide() con jquery pero no con el modo JavaScript puro. Lo intentaré ahora – Jimmy

+2

Lamentablemente, todavía se cuelga IE – Jimmy

+0

@Jimmy: si no lo ha hecho, intente cambiar '$ ('div # questions'). Hide();' to '$ ('div # questions'). Css ("pantalla", "ninguno"); ' –

1

Examine el código en el depurador de IE (con un jQuery no minificado) y vea en qué línea muere.

0

Desactivar extensiones.

Es extremadamente poco probable que su único problema es javascript.

0

En mi caso fue Fiddler ad-don el causante de IE se bloquea en mshtml.dll.