【问题标题】:How to execute scripts with jQuery until it has been loaded如何使用 jQuery 执行脚本,直到它被加载
【发布时间】:2014-05-13 07:36:03
【问题描述】:

我有一个这样的网络结构:

  • 头脚本(如 Normalizer)
  • 正文开始
  • HTML 和包含 jQuery 1 的脚本
  • HTML 和包含 jQuery 2 的脚本
  • HTML 和包含 jQuery 3 的脚本
  • 正文结束
  • jQuery 在这里加载
  • 其他脚本(如 G. Analytics)

问题是 HTML 和脚本包含 jQuery 代码,但 jQuery 是最后加载的。 加载 jQuery 后如何成功执行这些脚本?

请注意以下限制:

  1. 我无法在 HTML 和脚本之前加载 jQuery
  2. jQuery 代码需要在它所在的位置(快速说明:我将从经常更改的外部源加载)

我尝试将脚本放在函数 window.onload 函数上,但它不起作用...

有什么解决办法吗?

【问题讨论】:

  • 你到底为什么要加载库??
  • @MilindAnantwar 没关系,处理它!
  • @martynas 当 $ 未定义时你怎么会疯?
  • 使用 require.js 来按顺序加载你的脚本
  • 你说“我不能在 HTML 和脚本之前加载 jQuery”,但显然你只是不想?!

标签: javascript jquery html arrays


【解决方案1】:

requirejs 是你的答案。

RequireJS 是一个 JavaScript 文件和模块加载器。它针对浏览器内使用进行了优化,但也可以在其他 JavaScript 环境中使用,例如 Rhino 和 Node。使用像 RequireJS 这样的模块化脚本加载器将提高代码的速度和质量。

http://requirejs.org/docs/jquery.html

【讨论】:

    【解决方案2】:

    试试这样的

    <html>
        <head>
    
            <script>
                function page_init(){
                    //your javascript code with jquery
                }
            </script>
        </head>
        <body>
            <!-- html stuff goes here -->
            <script src="jquery.js"></script>
            <script>
                $(function(){
                    page_init();
                });
            </script>
        </body>
    </html>
    

    【讨论】:

    • 一般来说,总是解释为什么答案中给出的代码会为 OP 和有类似问题的未来用户的利益而工作。如果在 HTML 文档中定义了使用 jQuery 的脚本,则此代码可能运行良好。使用单独加载的 jQuery 的外部文件呢?鉴于在浏览器中一次可以下载多少个文件的限制,并且每个文件的下载时间可能比其他文件少或多,这个答案如何解决这个问题?
    • 感谢@rajesh,我可以看到您的解决方案的意义,但是它不符合预期的结构。 HTML 和 jQuery 代码必须彼此接近,因为它们密切相关并且是从用户可编辑的外部源加载的。使用这种结构,我每次都需要“替换”文档的 2 个部分。
    猜你喜欢
    • 2011-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-08
    • 2018-07-19
    • 1970-01-01
    • 2022-01-01
    • 2019-01-04
    相关资源
    最近更新 更多