[英]Order of script execution when using document.write
我需要運行一個名為Fastclick的庫,以處理手機上300毫秒的點擊延遲。 同時,如果我不在手機上運行,則無需運行它。 所以我想做這樣的事情:
<head>
<script>
var UserAgent = navigator.userAgent;
if (screen.width < 851 || UserAgent.indexOf('iPad') !== -1 || UserAgent.indexOf('iPhone') || UserAgent.indexOf('Android')) {
document.write('<script src=\"/ExternalFiles/Fastclick.js\"></script>');
}
</script>
//second script
<script>
if (FastClick) {...}
</script>
</head>
如您所見,第二個腳本檢查是否已加載FastClick
。 在我的本地計算機上,這可行。 但是,我想知道它是否僅由於文件是從文件系統中立即加載(即沒有延遲)而起作用的,或者實際上是document.write
語句觸發了加載並且腳本執行一直保持到該腳本被執行已加載。 我正在尋找后一種行為:通過document.write
加載的腳本會暫停JavaScript解析直到加載嗎?
為什么不總是包含文件並僅在需要時才調用函數? 然后,您不必考慮您的方式涉及的任何可能性:
<head>
<script src="/ExternalFiles/Fastclick.js"></script>
<script>
var UserAgent = navigator.userAgent;
if (screen.width < 851 || UserAgent.indexOf('iPad') !== -1 || UserAgent.indexOf('iPhone') || UserAgent.indexOf('Android')) {
FastClick(...)
}
</script>
</head>
非移動瀏覽器一次加載文件后,它就位於緩存中,並且不會減慢頁面加載速度。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.