簡體   English   中英

為什么我用 Google Closure 編寫的事件偵聽器不起作用?

[英]Why is my event listener written in Google Closure not working?

我的 Google Closure 代碼中有一個函數,它帶有一個事件偵聽器,旨在在主體加載時將 soy 模板生成的 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 編寫的事件偵聽器不起作用?

你應該停止瀏覽器事件。

事件.stopPropagation();

您應該將它附加到窗口對象。

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

如果您在“窗口”對象而不是文檔主體上偵聽“加載”事件,則可以使用 Google Closure。

試試這個: goog.events.listen(window, "load", function(){//code })

PS,很抱歉我的回答晚了8年

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM