如何判断DOM何时在Dart中准备好了?

时间:2011-12-08 18:06:31

标签: dom dart

我希望在页面准备好之后获得有关某些DOM元素的一些信息,但我还没弄清楚如何判断它是什么时候。我尝试过使用document.on.contentLoadeddocument.on.readyStateChange,但似乎都没有用。在以下代码中,onContentLoaded()onReadyChanged()永远不会被调用。

class WhiteTrace {

  WhiteTrace() {    
  }

  void onContentLoaded(Event e) {
    print("onContentLoaded");
    // This never gets called 
  }

  void onReady() {
    print("onReady");
    // Do stuff
  }

  void onReadyChanged(Event e) {
    print("onReadyStateChanged");
    // This never gets called
    if (document.readyState == "complete") {
      onReady();
      document.on.readyStateChange.remove(onReadyChanged);
    }
  }

  void onResize(Event e) {
    // Do stuff
  }

  void run() {
    write("Hello World!");
    document.on.contentLoaded.add(onContentLoaded);

    window.on.resize.add(onResize);

    document.on.readyStateChange.add(onReadyChanged); 
    print("readyState: " + document.readyState);
    if (document.readyState == "complete") {
      document.on.readyStateChange.remove(onReadyChanged);
      onReady();
    }
  }

  void write(String message) {
    // the HTML library defines a global "document" variable
    document.query('#status').innerHTML = message;
  }
}

void main() {
  new WhiteTrace().run();
}

1 个答案:

答案 0 :(得分:7)

您无需关心DOM是否已加载 - Darts main仅在DOM完全加载时启动。

http://www.dartlang.org/articles/embedding-in-html/

“Dart代码仅在解析页面后执行.Dart程序员可以假设DOM已完全加载。”