IE7/8 javascript "SCRIPT5007: No se puede obtener el valor de la propiedad"

Tengo un sitio en desarrollo que usa Google Maps API V3 para cargar múltiples creadores de ubicación. Todo funciona excepto en IE7/8, donde mi bucle a través de una matriz falla debido al siguiente error:

SCRIPT5007: Unable to get value of the property '5': object is null or undefined

Revisé todas las preguntas similares en StackOverflow y no puedo encontrar ninguna solución.

Entonces, estoy tratando de acceder a los datos de una matriz de objetos (también probé una matriz anidada pero ocurre el mismo error). Mi matriz es la siguiente. También intenté soltar el objeto html en caso de que estuviera causando un problema, pero no hubo cambios: IE7/8 aún no puede obtener el valor del objeto.

var sites = [
    {title: "Hermitage Medical Clinic", latitude: 53.3593139774, longitude: -6.40494071541, enumerator: 1, html: "<div class=\"find_a_surgeon_info_inner\"><h4 style=\"margin: 0; padding: 0;\">Hermitage Medical Clinic</h4><p>Old Lucan Road, Dublin 20</p><p><a href=\"http://devel.pixelapes.com/iaps.ie/location/hermitage-medical-clinic/\">View hospital details</a></p></div>", iconTerm: "hospital" }
        ];

Y aquí está mi función que intenta acceder a los datos:

        function setMarkers(map, sites) {

            for (var i = 0; i < sites.length; i++) {
                // var sites = markers[i];
                var icon = '<?php bloginfo("template_url"); ?>/images/map-icons/' + sites[i].iconTerm + '.png';
                var siteLatLng = new google.maps.LatLng(sites[i].latitude, sites[i].longitude);
                var marker = new google.maps.Marker({
                    position: siteLatLng,
                    map: map,
                    icon: icon,
                    title: sites[i].title,
                    zIndex: sites[i].enumerator,
                    html: sites[i].html
                });

                var contentString = "Some content";

                google.maps.event.addListener(marker, "click", function () {
                    infowindow.setContent(this.html);
                    infowindow.open(map, this);
                });
            }
        }

También intenté volver a usar el marcador de mapas predeterminado en caso de que hubiera un problema específico con el objeto iconTerm pero IE7/8 simplemente falla al intentar obtener el siguiente valor del objeto.

Aquí hay una página en la que esto está ocurriendo: http://devel.pixelapes.com/iaps.ie/surgeon/eamon-s-beausang/

Curiosamente, tengo otra instancia de mapa en la que no establezco los límites con map.fitBounds. La falla para obtener los valores de los objetos todavía ocurre, pero el mapa se carga (pero muy desordenado): http://devel.pixelapes.com/iaps.ie/find-a-hospital-or-clinic/

Intenté eliminar la funcionalidad de fitBounds en la página de un solo cirujano, pero el mapa aún no se carga parcialmente como lo hace en el mapa "Buscar un hospital".

Cualquier ideas sobre cómo evitar esto?

preguntado el 03 de mayo de 12 a las 12:05

2 Respuestas

Hay comas finales después de los últimos elementos de sites y latlngs, elimínelos, a IE no le gustan las comas finales en matrices/objetos.

contestado el 03 de mayo de 12 a las 13:05

¡Gracias Dra. Molle! ¡No me di cuenta de eso y me estaba volviendo loco! La única razón por la que existe la coma final es porque estoy generando el objeto a partir de un bucle de PHP y olvidé contar la matriz y colocar la coma final en el último objeto. - alexleonard

Lamentablemente, no ha resuelto por completo mis problemas de IE7/8, ya que todavía tengo problemas para que aparezcan los marcadores, ¡pero este es definitivamente el primer paso de mis problemas resueltos! ¿Debo publicar una nueva pregunta sobre los marcadores que no se muestran? - alexleonard

Heh, acabo de resolver el problema con la desaparición de los marcadores... una regla genérica de CSS img los estaba afectando con márgenes y relleno... Soy un idiota (pero entonces las herramientas de desarrollo de IE no te permiten mirar dentro del mapa para que no pudiera ver lo que estaba pasando) - alexleonard

@ Dr. Molle ¿de qué estás hablando? No veo ninguna coma final. Además, IE EXIGE comas finales en los objetos JSON, por lo que su respuesta me parece muy extraña. - Diestro

Su comentario es mucho más extraño, 1. Estamos hablando de IE7+IE8, 2: hay dos páginas vinculadas (y puede suponer que no respondieron con un error del servidor hace 10 meses pero contenían el código con comas finales ) - Dr. Molle

Creo que su problema puede ser que a IE no le guste uno (o más) de los nombres de propiedad que ha elegido para los miembros de la sites Formación. Sugiero cambiar su primera sección de código a esto:

var sites = [{
        "title": "Hermitage Medical Clinic",
        "latitude": 53.3593139774,
        "longitude": -6.40494071541,
        "enumerator": 1,
        "html": "<div class=\"find_a_surgeon_info_inner\"><h4 style=\"margin: 0; padding: 0;\">Hermitage Medical Clinic</h4><p>Old Lucan Road, Dublin 20</p><p><a href=\"http://devel.pixelapes.com/iaps.ie/location/hermitage-medical-clinic/\">View hospital details</a></p></div>",
        "iconTerm": "hospital"
}];

contestado el 03 de mayo de 12 a las 15:05

En realidad tenía razón ahora que reviso su código, pero la respuesta del Dr. Molle definió la falla real. Era solo la coma final la que estaba causando el problema, pero tener los nombres de las propiedades entre comillas no supuso ninguna diferencia. - alexleonard

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.