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