Google Maps API, обратный вызов - это метод объекта - PullRequest
3 голосов
/ 31 августа 2011

Я разорвал каждую строчку кода здесь, за исключением этого:

show = foo.show = function () {
    alert("test");
};

Теперь, это работает, если я запускаю API карт следующим образом:

foo.display = function() {
    this.elem = document.getElementById('fooBox');

    var script  = document.createElement("script");
    script.type = "text/javascript";
    script.src  = "http://maps.google.com/maps/api/js?sensor=false&callback=show";
    document.body.appendChild(script);
};

Но когда я пытаюсь вызвать его через callback=foo.show, происходит сбой:

foo.display = function() {
    this.elem = document.getElementById('fooBox');

    var script  = document.createElement("script");
    script.type = "text/javascript";
    script.src  = "http://maps.google.com/maps/api/js?sensor=false&callback=foo.show";
    document.body.appendChild(script);
};

Единственная ошибка, которую я могу получить из инспектора WebKit - Uncaught TypeError: Cannot call method 'show' of undefined.

Я новк API карт Google, но я бы подумал, что методы не имеют значения?Я уверен, что я видел это где-то сделано.Что я тут не так делаю?

1 Ответ

3 голосов
/ 01 сентября 2011

foo объявлено как var?Если так, это не доступно для глобальной области.Добавьте объявление типа:

foo = {};

foo.show = function () {
   ...
};

...

к своему коду, и это, вероятно, решит проблему.Ответ от WebKit указывает, что переменная foo не находится в области действия во время вызова show().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...