如何判断DOM在Dart中何时准备就绪?

如何判断DOM在Dart中何时准备就绪?,dom,dart,Dom,Dart,我想在页面准备好后获得一些关于DOM元素的信息,但我还没有弄清楚如何判断什么时候开始。我尝试过使用document.on.contentLoaded和document.on.readyStateChange,但这两种方法似乎都不起作用。在下面的代码中,onContentLoaded()和onReadyChanged()从未被调用 class WhiteTrace { WhiteTrace() { } void onContentLoaded(Event e) {

我想在页面准备好后获得一些关于DOM元素的信息,但我还没有弄清楚如何判断什么时候开始。我尝试过使用
document.on.contentLoaded
document.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();
}

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


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

您可以始终使用
window.on.load
。正确的DOM事件是
document.addEventListener(“DOMContentLoaded”)
。是否确实存在?DOMContentLoaded是w3c为事件定义的名称。我对dart或它的DOM仿真层一无所知。必须有某种机制让dart编译类似于
document.addEventListener(“DOMContentLoaded”,cb)
的js。我很确定
document.on.contentLoaded
等同于
DOMContentLoaded
。下面是相关的bug,你可能想主演它:这基本上意味着他正在收听一个已经启动的事件。因此,事件处理程序永远不会被触发。代码已经处理了这种情况,但无论如何,我不认为这是真的了。最初,我得到一个readyState“loading”,对一些HTML元素的查询返回null。后来我得到了“complete”和一个有效的HTML元素。您包含的链接还指出:“我们正在考虑允许Dart代码在加载脚本后立即运行”