2013-10-23 192 views
3

以非阻塞方式呈現Javascript的不同方法(效率比較)是什麼?我聽說過可以與腳本標籤一起使用的defer屬性。還有其他這樣的方法嗎?如果有,那麼它們有什麼優勢而不是延遲?使Javascript非阻塞

回答

5

我聽說過可以與腳本標記一起使用的defer屬性。

是的,defer and async使腳本(可能)不能在初始解析/呈現期間同步運行。

是否有類似的方法,...

是的,如果你在JavaScript中創建一個script元素,並將其追加到DOM,不託起頁面解析/渲染無論是。例如: -

<script> 
(function() { 
    var script = document.createElement('script'); 
    script.src = "/path/to/your/async/script.js"; 
    document.getElementsByTagName('script')[0].parentNode.appendChild(script); 
})(); 
</script> 

...如果有然後在推遲他們有什麼優勢?

deferasyncaren't universally supported和一些瀏覽器have some quirks around them。具體而言,IE < 9可能不按順序執行defer'腳本,而defer'd腳本意味着按順序處理(僅在頁面的解析/呈現期間)。如果您自己添加script元素,則可以掛接它們的load事件,然後加載下一個腳本(或者使用像RequireJS這樣做的功能,以及更多功能)。除此之外,沒有太多。