我通过将JS文件附加到HTML头来异步下载JS文件。 现在在html体中,在使用JS文件之前,我想检查JS文件是否已经下载并且是否存在于缓存中。 如果缓存中没有JS文件(例如:在互联网连接缓慢的情况下),我想阻止它直到下载。 换句话说,如果JS下载不完整,我想模拟阻止JS下载的行为。
知道如何实现这一目标吗?
答案 0 :(得分:1)
您可以在JS文件和HTML文件中实例化任何对象,您可以使用typeOf运算符检查该对象是否可用,因此如果typeof(x)未定义,您可以认为该文件尚未下载
答案 1 :(得分:0)
如果您可以控制HTMl文件和JS文件:在已经加载的代码中的某处定义一个“回调”函数,并从JS文件的末尾调用它。示例功能:
<html>
<head>
<script>
function notify_file_is_loaded(identifier) {
if (identifier === 'somefile.js') {
// it's loaded!
// run the code that (in synchronous mode) you'd block for
}
}
</script>
<!--- ... --->
和JS文件:
// somefile.js
// some JS code goes here
// ...snip...
notify_file_is_loaded('somefile.js');
答案 2 :(得分:0)
改为同步获取JS。只需使用html > head
将脚本标记添加到src="<script-location>"
,浏览器就会同步执行此下载。
在这里进行观察: 在下载某些内容之前阻止用户体验不佳。如果使用优雅降级原则编写代码,则页面应仅激活可用的功能。你会让另一个网络开发者对你这么做吗?不,我不会 - 我会关闭该标签并继续前进:)
答案 3 :(得分:0)
您是否推迟通过JavaScript加载JavaScript文件?如果是这样,您应该能够使用onload
事件处理程序在加载JavaScript文件后执行代码:
<script>
var js = document.createElement('script');
js.onload = function() {
// your code goes in here
}
js.src = 'foo.js';
document.body.appendChild(js);
</script>