【问题标题】:Any JavaScript or jQuery Method to Load JS files synchronously?任何 JavaScript 或 jQuery 方法来同步加载 JS 文件?
【发布时间】:2010-09-28 10:25:13
【问题描述】:

我在我的 asp.net 页面中通过 jQuery 加载用户控件。

用户控件包含 JavaScript 文件,同时加载用户控件时我所有的 js 加载一次是相互依赖的,并且在一次加载所有文件时它们往往会出错。所以我希望我的 JavaScript 文件一个一个地同步加载,因为一个文件完全加载,而不是下一个文件应该开始加载。

有没有办法在 JavaScript 中设置同步模式?或任何JavaScript来设置这个?任何指针或建议都会非常有帮助。

【问题讨论】:

    标签: javascript asp.net jquery


    【解决方案1】:

    您应该使用jQuery.load() 仅加载一个HTML 片段,而不是包含脚本的完整页面。 jQuery使用加载文档的DOM结构来修改页面对应部分(控件)的DOM结构。

    一般您可以使用 jQuery.ajax 加载脚本,但我建议您改用简化形式 jQuery.getScript()jQuery.getScript() 可用于使用 GET HTTP 请求从服务器加载 JavaScript 文件,然后执行它。使用success 事件处理程序,您可以在脚本加载后执行一些操作。

    【讨论】:

    • 我正在修改我的代码并尝试这样做,希望对我有帮助:) colourgray.wordpress.com/2008/09/22/…
    • @Monu:我想你可以在不使用 async: false 的情况下加载脚本。只需使用success 事件处理程序来控制脚本已经加载的时刻,您就可以使用它了。您可以在success 事件处理程序中级联许多$.ajax$.getScript() 请求。
    • 很酷,谢谢!!!顺便说一句 async: false 对我有用,但我也会尝试你的建议!再次感谢!!
    【解决方案2】:

    JS 文件按照您在 HTML 代码中的顺序加载。

    例如,

    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js"></script>
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.4/jquery-ui.min.js"></script>
    

    您总是需要在 jQuery UI 之前加载 jQuery(否则 UI 将无法识别,因为它使用了 jQuery $ 快捷方式),因此您必须将带有 jQ​​uery 的行放在带有 jQ​​uery UI 的行之前到您的 HTML 中。 当你的页面完全加载时,js 将通过 window.onload, $(document).ready(function(){}); 启动。对于 jQuery 或通过它将遇到的第一个命令。

    【讨论】:

      【解决方案3】:

      JavaScript 文件总是同步加载。事实上,JavaScript 总是同步运行,因为它是单线程的。

      我的猜测是您需要确定包含文件的顺序才能正常运行。加载完所有 JavaScript 和图像后,您可以使用 window.onload 事件运行脚本。

      【讨论】:

      • 如果使用 document.createElement() 将 JavaScript 文件添加到 DOM 中,它们将被异步下载。这意味着可以先解析和执行较大文件后添加的较小文件。
      • @Andy E:嗯,我不知道如何使用 createElement,干杯。如果我动态加载脚本文件,我会注意的。
      • 感谢您的回复!如果我尝试 $.getScript() 它将是异步的还是同步的??
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-15
      • 1970-01-01
      • 1970-01-01
      • 2017-06-01
      • 1970-01-01
      相关资源
      最近更新 更多