2013-12-13 3 views
1

У меня есть среда Closure, отлично работающая в моей среде разработки. В новой папке & файла, однако, он не работает.Закрытие - библиотека не загружается должным образом

Например, возьмите этот тестовый скрипт:

goog.require('goog.dom'); 
console.log(goog); 
console.log(goog.dom); 
goog.dom.getElement('logout').innerHTML = "Heck"; 

Вот и все, плюс base.js в HTML.

Первый console.log показывает объект со всем необходимым. Все файлы также загружаются в DOM.

Второй консольный журнал, однако, говорит undefined, и поэтому последняя строка не работает (очевидно). Ошибка консоли Chrome: Uncaught TypeError: Cannot call method 'getElement' of undefined.

Что, черт возьми, происходит? Это то же самое, если я попробую XhrIo. Он не находит методы на объекте goog.

Спасибо.

ответ

3

Documentation:

Примечание: Не помещайте goog.require() заявления в том же тег сценария в качестве точки входа в код, который использует goog.required функции или классов. Вызов goog.require() добавляет код в документ после тег сценария , содержащий вызов.

Так

<script> 
    goog.require('goog.dom'); 
    console.log(goog.dom); 
</script> 

печатает undefined. Но

<script> 
    goog.require('goog.dom'); 
</script> 
<script> 
    console.log(goog.dom); 
</script> 

или

<script> 
    goog.require('goog.dom'); 
    addEventListener('load', function() { 
     console.log(goog.dom); 
    }); 
</script> 

печатает объект.

FYI, есть другие возможные рабочие процессы. Например, скрипт closbuilder.py может ускорить загрузку всех необходимых файлов.

+0

Красивые. Спасибо :) Я соглашусь, когда отведенное время прошло ... – Nick

Смежные вопросы