【问题标题】:Load order of js filesjs文件的加载顺序
【发布时间】:2014-05-04 09:13:15
【问题描述】:

我似乎无法让预加载器(查询加载器 2)先于页面上的所有其他内容加载。 当我刷新页面时,全屏滑块显示中的图像会阻塞页面,然后查询加载器启动。 有没有办法在页面上的所有其他内容之前启动预加载器?

我经常使用堆栈溢出,通常可以找到我的问题的答案,但由于我对 javascript 的了解有限,这让我很困惑。我尝试过的事情: 将对 queryloader2 的调用放在页眉的页面顶部。 将对滑块脚本的调用放在页面底部,以便它们在预加载器之后加载。 将预加载器的 z-index 更改为高于滑块。 jQuery.getScript() 按顺序加载脚本,但滑块仍显示在页面下方,然后预加载器启动。

我认为这与加载顺序有关,但如果您对我在这里做错了什么有任何想法,我们将不胜感激。

我已经放了一个指向我的网站的链接,因为我不知道在这里放哪一段代码,所以你可以看到预加载器和滑块加载错误的方式 http://stavriaphotography.com

【问题讨论】:

    标签: javascript jquery load-order


    【解决方案1】:

    该网站非常依赖外部脚本。以下是在浏览器中加载资源的工作原理:

    图像是异步加载的,这意味着浏览器不会等待图像加载,然后继续向下 DOM,但是

    JavaScript 是同步加载的,您可以在加载前一个之前加载下一个。

    jQuery $(document).ready() 函数仅在 DOM 完全加载时触发。

    这是您网站上发生的事情:

    您在头部加载 jQ 和 queryLoader 并准备在 DOM 准备好时调用它。页脚中的脚本需要一些时间来加载并延迟 $(document).ready() 函数调用。同时,您的正文中有图像,并且由于它们是异步加载的,因此浏览器会在 queryLoader 准备好执行之前开始加载它们。

    在您的情况下,最简单的解决方案是将所有外部脚本移动到您的 html 标头,但这不是一个非常实用的解决方案。

    我建议阅读一下 JavaScript 并将您的网站拆分为多个文件以加快加载速度。

    一些提示:jQuery.ajax() 和 Handlebars.js,或者如果你真的想疯狂地潜入 Backbone.js,使用 RequireJS 进行异步 javascript 加载。

    希望这会有所帮助!

    【讨论】:

    • 这很有帮助,感谢您抽出宝贵时间来回答。祝你有美好的一天!
    【解决方案2】:

    将 Jquery 库放在首位

    <script src="http://code.jquery.com/jquery-1.11.0.min.js"></script>
    

    然后添加你的其他 JS 文件

    【讨论】:

    • 感谢您的回复,但我已经将该文件放在顶部,其他文件在之后加载。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-02-10
    • 1970-01-01
    • 2015-10-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-04
    相关资源
    最近更新 更多