Почему мой слушатель событий, написанный в Google Closure, не работает?

У меня есть функция в моем коде Google Closure с прослушивателем событий, целью которого является добавление HTML, созданного соевым шаблоном, в тело при загрузке тела:

/**
 * Constructs the home page.
 */
AppLoader.prototype.constructHomePage = function() {
  goog.events.listen(document.body, 'onload', function() {
      document.body.innerHTML = templates.home.main();});
}

(new AppLoader()).constructHomePage();

Однако это не работает. Chrome Console также не предлагает ошибок. Я попробовал приведенный ниже код, который использует функцию addEventListener, встроенную в javascript.

... class instantiation
/**
 * Constructs the home page.
 */
AppLoader.prototype.constructHomePage = function() {
  document.body.innerHTML = templates.home.main();
}

document.body.addEventListener('load', function() {
  (new AppLoader()).constructHomePage();
}, false);

Этот последний метод работает, но не использует Closure вообще, поэтому я не считаю его надежным. Почему мой слушатель событий, написанный в Google Closure, не работает?

3 ответа

Вы должны остановить события браузера.

event.stopPropagation ();

Вы должны прикрепить его к объекту окна.

goog.events.listenOnce(
  window
, goog.events.EventType.LOAD
, function(){
    window.alert( 'Ready for ADVANCED_COMPILATION!' );
  }
);

Вы можете использовать Google Closure, если вы прослушиваете событие «load» в объекте «window», а не в теле документа.

Попробуй это: goog.events.listen(window, "load", function(){//code })

PS, извините, что я ответил с опозданием на 8 лет

Другие вопросы по тегам