Запуск обратного вызова в скомпилированном JavaScript - PullRequest
0 голосов
/ 25 февраля 2012

У меня сложная проблема. Я использую API-интерфейс Blogger JSON для получения данных JSON и отображения на странице. Обычно это очень просто:

    <script src="http://blog-name.blogspot.com/feeds/posts/default?alt=json-in-script&amp;callback=renderPost&amp;max-results=4"></script>

Вы встраиваете этот скрипт на страницу, которая запрашивает данные и передает объект данных в обратный вызов javascript (в этом случае обратный вызов называется renderPost).

Проблема в том, что я использую компилятор Closure для компиляции остальной части моего JS. Итак, renderPost запутан.

Как бы вы подражали этому поведению с помощью javascript? Можете ли вы использовать AJAX-запрос для получения объекта JSON?

Отчасти проблема в том, что я не знаю, что здесь делает Blogger, поэтому объяснение этого также будет полезно.

Ответы [ 2 ]

3 голосов
/ 25 февраля 2012

В компиляторе Closure можно экспортировать переменную следующим образом:

window['varname'] = varname;

Например:

// ==ClosureCompiler==
// @compilation_level ADVANCED_OPTIMIZATIONS
// @output_file_name default.js
// ==/ClosureCompiler==
window['renderPost'] = renderPost;
function renderPost(name) {
    return prompt('', '');
}

компилируется в:

window.renderPost=a;function a(){return prompt("","")}a();

вместо (при пропуске window['renderPost'] = renderPost):

prompt("","");
1 голос
/ 25 февраля 2012

Он делает jsonp , и в настоящее время это единственный способ получить json из другого домена. Нет, вы не можете использовать обычный ajax-запрос для междоменной связи. См. Ответ Роба В. о том, как решить вашу проблему.

...