簡體   English   中英

使用document.write時腳本執行的順序

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM