使用 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>
当非移动浏览器加载文件一次时,它在缓存中并且不会减慢页面加载速度。
我需要 运行 一个名为 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>
当非移动浏览器加载文件一次时,它在缓存中并且不会减慢页面加载速度。