使用document.write时脚本执行顺序

时间:2015-06-02 17:53:02

标签: javascript fastclick.js

我需要运行一个名为Fastclick的库,以便处理移动设备上300ms的点击延迟。同时,如果我没有在手机上运行,​​我也不需要运行它。所以我希望做这样的事情:

<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解析,直到它们被重新加载?

感谢。

1 个答案:

答案 0 :(得分:0)

为什么不总是包含文件并仅在需要时调用该函数?那么你不必考虑任何可能的方式:

<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>

当非移动浏览器加载文件一次时,它会在缓存中加载,并且不会减慢页面加载速度。