你好我遇到了一个关于加载外部Javascript的常见问题,我使用gulp开发环境,显然用于压缩HTML和JS等文件。
当我通过按Ctrl + F5硬刷新浏览器(如谷歌浏览器或Firefox)时,javascript似乎并不总是加载,因此需要再次刷新页面,它不一致但是在开发环境之外进行测试时我遇到了同样的问题。
我还使用了基本代码行,在加载之前等待整个页面先下载;
jQuery(document).ready(function($) {}
为了澄清,我已经尝试了其他方法,但除了加载JS的不一致之外,没有收到任何不同的结果。
我在我的项目中使用jQuery库,但它是唯一使用的js库。
我试图否定这个问题的其他一些方法是将用于调用jQuery的脚本标记和HTML页面开头的js文件放在头部,也就是在html标记的结束标记之前。
只是为了澄清,这里是我用来调用jQuery和js文件的脚本标签。
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.2.1/jquery.min.js" type="text/javascript" async></script>
<script src="assets/js/functions.js" type="text/javascript" async></script>
打开DevTools(F12)转到网络选项卡,然后选中禁用缓存复选框。现在,每次刷新页面时,都会刷新所有脚本。
此外,如果要在任何设备/浏览器中刷新脚本,则必须向脚本URL添加其他参数。例如:
<script src="app.js?v=1.2"></script>
每当你改变?v=1.3
浏览器时都会重新下载脚本。
我通过反复试验找出了问题;问题是jQuery在加载javascript函数后偶尔会加载一点,这会导致使用jQuery创建的函数会引用任何jQuery库。
问题是我在jQuery脚本导入中使用了'async'属性,允许在脚本标记本身仍在加载时加载脚本标记之后的内容。