Что является экстренным для этой функции? - PullRequest
0 голосов
/ 14 февраля 2012

Я просто не понимаю компилятор Google Closure в расширенном режиме и соответствующий внешний вид.

Конкретно: кто-нибудь может сказать мне, как не дать CC в расширенном режиме переименовать эту функцию, поскольку мне нужно вызывать ее из моего HTML (<a href="javascript:searchAddress();">)?

function searchAddress() {

    geocoder = new google.maps.Geocoder();
    var useraddress = $('#where').val();

    if (geocoder && useraddress) {   
        geocoder.geocode( {'address': useraddress, 'region': region}, function(results, status) {
            if (status == google.maps.GeocoderStatus.OK) {
                myPosition = results[0].geometry.location;
                myAccuracy = 150;
                echoAddress(results[0].formatted_address);
            }
        });
    }
}

Я думал, что понял, что мне нужно написать внешний файл, так как функция вызывается из внешнего кода, передавая что-то вроде

window['searchAddress'] = searchAddress

или

function searchAddress() {}

но ни одна из этих и несколько других попыток не работают. CC компилируется без ошибок, но браузер жалуется

Неопределенное исключение: ReferenceError: Неопределенная переменная: searchAddress

searchAddress () был удален CC и больше не является именем функции в моем min.js. Спасибо за любую подсказку. Объяснения приветствуются, спасибо.

1 Ответ

0 голосов
/ 15 февраля 2012

Вам не нужно создавать extern, вы хотите экспортировать функцию:

http://code.google.com/closure/compiler/docs/api-tutorial3.html

Добавьте это к коду (не внешний файл):

window ['searchAddress'] = searchAddress

...