我需要运行一个名为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解析,直到它们被重新加载?
感谢。
答案 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>
当非移动浏览器加载文件一次时,它会在缓存中加载,并且不会减慢页面加载速度。