Карта Google не будет загружаться только в IE7: «Неожиданный вызов метода или доступа к свойству» - PullRequest
0 голосов
/ 06 апреля 2011

У меня есть карта, которая инициализирует карту Google, когда пользователь нажимает кнопку. Это вызывает событие, которое запускает этот метод:

$self.maps = {
    loadMap : function(){
        var canvasDom = "map";
        var latlng = new google.maps.LatLng(40.7608, -111.8910);
        var myOptions = {
            zoom: 12,
            center: latlng,
            mapTypeId: google.maps.MapTypeId.ROADMAP
        };
        $self.vars.maps.map = new google.maps.Map(document.getElementById(canvasDom), myOptions);
    },
//other methods in the object for handling other maps stuff...
};

Когда вызывается последняя строка для создания новой карты, я получаю следующую ошибку: «SCRIPT65535: неожиданный вызов доступа к методу или свойству». main.js, строка 31, символ 347

Строка кода, на которую он, похоже, ломается:

a[Va](b);

Все это работает в Firefox, Chrome, IE8 и IE9, все, что я пробовал, кроме IE7 (с использованием режимов совместимости IE9).

Обновление: Я установил JSFiddle для этого , инициализируя карту таким же образом, только по какой-то причине она не воспроизводит ошибку IE7, которую я получаю в моем приложении. Я не совсем уверен, что это говорит о проблеме.

1 Ответ

2 голосов
/ 07 апреля 2011

После нескольких мучительных часов комментирования сценариев в поисках коллизий я начал вручную вставлять фрагменты кода, которые выполнялись до момента создания карты.В конце концов я свел это к виновнику.

Проверьте это:

//set that the map is open, and
//should remain so if the user searches again
$('form').append('<input type="hidden" name="map" value="true">');

$('#search-list-map')
    .removeClass('listview')
    .addClass('mapview');

//show map, hide list
$('#map').removeClass('hide');
$('#listResults').addClass('hide');

//initialize the map
$self.maps.loadMap();

loadMap () - метод, на который я ссылаюсь в вопросе выше. Заметили, что поле ввода я добавляю в форму? Получается, что если есть элемент с именем , идентичным элементу div карты id , иэтот элемент появляется за до div карты в DOM, он выдаст ошибку.Насколько мне известно, это будет происходить только в IE7 (возможно, в IE6, у меня нет возможности проверить это).

Я воспроизвел ошибку на JSFiddle, здесь .Запустите его под IE7, и вы поразите его.

...