2013-05-16 43 views
1

當我加載我的頁面時,在Dart開始修改內容之前,我會看到原始頁面(僅用於很短的時間)。我如何避免這種情況?在渲染前執行代碼

文件index.html

<html> 
    <head> 
     <script type="application/dart" src="app.dart"></script> 
     <script src="packages/browser/dart.js"></script> 
    </head> 
    <body> 

    </body> 
</html> 

文件app.dart

main(){ 
    var d = new DivElement(); 
    d.text = "This is a test"; 
    query('body').append(d); 
} 

在這個例子中,我將首先看到一個空白頁,然後,不久之後,文本「這是一個測試」。我只希望看到文字。

+0

不知道這是否是原因,但是Dart中的'main'函數總是在DOM加載後執行(不確定確切的時間...)。 – Ladicek

+0

這可能與它有關。如果它對應於jquery $(document).load()。但是,有沒有其他的選擇?或者這只是我們應該學習的一種生活方式? – budde

回答

4

頁面將顯示在文本之前,因爲您的Dart代碼將在初始渲染(至少通常)之後運行。你可以在文檔的頂部塗抹一些白色層,並刪除它時,你的飛鏢代碼完成:

<body> 
    <div id="overlay" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; background: white; z-index: 1000000;"></div> 
</body> 

那麼當你的飛鏢代碼已經顯示應用:

query('#overlay').remove(); 

現在,您將看到一個空白頁面,直到Dart代碼準備好顯示一些東西。

0

如果你在開始的時候加載你的JS腳本,它會在頁面加載之前執行。所以,你會這樣做:

<html> 
    <head>...</head> 

    <body> 
     <script src="packages/browser/dart.js"></script> 
     <script type="application/dart" src="app.dart"></script>  
    </body> 
</html> 

這應該工作。如果沒有,Dart可能會在內部發生一些事情,這會導致這種情況。