2012-02-14 25 views
6

He investigado mucho sobre esto. Ya hay varias publicaciones en Stackoverflow sobre esto, pero ninguna parece tener una respuesta para mí.No se puede obtener el valor de la propiedad ____: el objeto es nulo o indefinido

Al igual que las otras publicaciones aquí, funciona bien en Chrome o Firefox. Pero en IE 9, 8, 7, & 6 obtengo el mismo error. He intentado el truco donde fuerza 9 en el modo de compatibilidad, pero no resuelve el problema.

Está diciendo Unable to get value of the property 'styleHelper': object is null or undefined, la ironía es que si, en IE 9, escribo en la consola window.microstrategy.bone("W2552_Ctl").styleHelper, funciona y devuelve la función que necesito (esa ID fue creada por WYSIWYG, no me odies).

Sí, todo está envuelto en un $(document).ready. Sí, no hay errores tipográficos No entiendo por qué IE odia esto tanto. Cualquier ayuda sería apreciada :)

El código en cuestión es una declaración de variable simple.

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

Parece que el IE está intentando tener acceso a ese objeto en ese mismo momento en lugar de asignarlo.

+0

Quizás podría mostrar el código que realmente genera el error ... –

+0

El código que genera el error es simplemente una declaración de variable. Ni siquiera está HACIENDO nada. Solo asignando una variable. El "código" es 'var ctlBone = window.microstrategy.bone (targetId +" _Ctl "). StyleHelper.ctlBone;'. –

+0

¿Es correcto el 'targetId'? –

Respuesta

6

FINALMENTE!

Fue un problema con un setTimeout. Aparentemente, setTimeout(function, miliseconds, param1, param2, param3); se rompe en IE específicamente.

FUENTE: http://arguments.callee.info/2008/11/10/passing-arguments-to-settimeout-and-setinterval/

+4

No había forma de saber si estaba utilizando 'setTimeout', en función de su pregunta. Es por eso que es importante que nos proporcione muestras de código. – Sharon

+3

Mis disculpas. Mi archivo JavaScript tiene más de 1000 líneas y esos dos bits en particular están muy separados. Dada mi investigación previa sobre el tema, pensé que era algo específico del navegador con IE y cómo manejaba los objetos, no el setTimeout. –

2

Sugiero no se envuelva con código jQuery en $(document).ready(function(){ función. También he estado enfrentando el mismo problema después de comentar que $(document).ready(function(){ está funcionando bien en todos los navegadores, incluido IE 9 8 7.

+3

Este tipo de cosas es mejor dejarlo como comentario. No debería demorar demasiado en obtener los 50 puntos de reputación que necesita. –

1

Intente configurar el navegador en modo compatibilidad - Herramientas, Configuración de vista de compatibilidad y seleccione Ver todos los sitios web en modo compatibilidad.

Cuestiones relacionadas