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

Cur*_*ous 4 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();
}
Run Code Online (Sandbox Code Playgroud)

Chr*_*ian 7

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

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

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

  • 这基本上意味着他正在聆听已经解雇的事件.因此事件处理程序永远不会被触发 (2认同)