2011-12-08 5 views
4

ページの準備が整った後、いくつかのDOM要素についての情報を得たいと思っていますが、これはいつどのようになっているのかわかりません。私はdocument.on.contentLoadeddocument.on.readyStateChangeを使ってみましたが、どちらもうまくいかないようです。次のコードでは、onContentLoaded()onReadyChanged()が呼び出されることはありません。ダーツでDOMがいつ用意されているかを確認するには?

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(); 
} 
+0

いつでも 'window.on.load'を使うことができます。正しいDOMイベントは 'document.addEventListener(" DOMContentLoaded ")'ですので、 'document.on.DOMContentLoaded'を試してください – Raynos

+0

DocumentEventsインターフェイスで" DOMContentLoaded "というイベントが見つかりません。それが存在すると確信していますか? – Curyous

+0

DOMContentLoadedは、イベントの定義済みのw3c名です。私はダーツやDOMエミュレーションレイヤーについて何も知らない。 'document.addEventListener(" DOMContentLoaded "、cb)' – Raynos

答えて

7

DOMがロードされているかどうか気にする必要はありません.Dartsメインは、DOMが完全にロードされたときにのみ起動します。

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

「ダーツのコードは、ページが解析された後にのみ実行されます。ダートプログラマはDOMが完全にロードされていることを前提とすることができます。」

+2

これは基本的に彼がすでに発砲した。したがって、イベントハンドラは決して解雇されません – Raynos

+0

コードはこのケースを既に処理していますが、とにかくこれはもう真実ではないと思います。最初は "読み込み中"のreadyStateを取得し、一部のHTML要素のクエリはnullを返します。後で私は "完全"と有効なHTML要素を取得します。あなたが含むリンクには、「スクリプトが読み込まれるとすぐにダーツコードを実行できるようにすることを検討しています」 – Curyous

関連する問題