2

我的 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 控制台也没有提供任何错误。我试过的是下面的代码,它使用了javascript原生的addEventListener函数。

... 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 编写的事件监听器不起作用?

4

3 回答 3

0

您应该停止浏览器事件。

event.stopPropagation();

于 2012-08-13T08:09:10.083 回答
0

您应该将其附加到窗口对象。

goog.events.listenOnce(
  window
, goog.events.EventType.LOAD
, function(){
    window.alert( 'Ready for ADVANCED_COMPILATION!' );
  }
);
于 2013-12-04T20:59:07.690 回答
0

如果您在“窗口”对象而不是文档正文上侦听“加载”事件,则可以使用 Google Closure。

尝试这个: goog.events.listen(window, "load", function(){//code })

PS,对不起,我的答案晚了8年

于 2021-05-19T15:11:19.487 回答