如果JS文件對渲染不重要,則可以使用該文件的<script>
標記上的async
或defer
屬性。使用async
基本上與將<script>
標籤放置在關閉<body>
標籤之前的效果基本相同。
< Script > - MDN
異步
HTML5設置這個布爾值,表明瀏覽器 應該,如果可能的話,異步執行腳本。它對內聯腳本(即,沒有src 屬性的腳本)沒有 影響。
延遲
此布爾屬性被設置爲指示該腳本是指文件被解析後要執行的瀏覽器。由於此功能尚未由所有其他主要瀏覽器實施,因此作者不應假定腳本的執行實際上將被延期。
您也可以使用setTimeout
調用。只要<script>
不阻止任何渲染,將其包裝在setTimeout
中應該會延遲它。
var delay = 10 /* or however many ms you want */
setTimeout(function(){
/* your code goes here */
}, delay)
編輯:如果你正在尋找的DomContentLoaded
事件後具體執行,只是包裝你的代碼在事件監聽該事件。
document.addEventListener("DOMContentLoaded", function(event) {
/* Your code goes here */
});
異步是在下載文件時加載。在domcontetncomplete之後它不會推送加載。推遲是推遲頁面分頁,但在domcontentcomplete之前。 – lixuanzhu 2015-03-31 21:49:05
我認爲你的意思是'DOMContentLoaded',沒有叫做'DomContentComplete'的事件。我已經爲您解決了一個可能的解決方案。 – Aweary 2015-03-31 21:57:32
這是一個外部js文件。事件我將setTimeout中的所有代碼包裝在這個文件中,這太遲了,因爲那時js文件已經被解析了。將我的代碼附加到DomContentLoaded事件將在事件處理程序中運行我的代碼。我的理解是在DomContentLoaded事件完成後繪製頁面。 – lixuanzhu 2015-03-31 22:08:32