【问题标题】:load jQuery script after JavaScript script has finished在 JavaScript 脚本完成后加载 jQuery 脚本
【发布时间】:2011-02-02 23:45:54
【问题描述】:

类似于加载文档后加载 jQuery 的方式,在 JavaScript 脚本完成后,我需要一些 jQuery。

我正在从 Google Data API 加载联系人数据,如果我是对的,则需要完全加载(通过 javascript)显示数据的 div,以便 jQuery 可以访问。

有什么办法吗?

【问题讨论】:

  • javascript 完成后做什么?你到底想做什么?
  • “JavaScript 脚本完成后”究竟是什么意思?你的意思是,在某个特定的 JavaScript 函数调用返回之后?
  • 让我感到困惑的一件事是,“JavaScript”这个词并不一定很有意义。它本质上与“a Python”或“a PHP”或“a Ruby”相同。 JavaScript 是一种编程语言,因此虽然很容易想象某人使用“JavaScript”一词可能意味着什么,但很难确切知道什么是正确的,因为该术语本质上是没有意义的。
  • 我正在从 Google Data API 加载联系人数据,如果我是正确的,则需要完全加载(通过 javascript)显示数据的 div 才能被 jQuery 访问。

标签: javascript jquery javascript-events


【解决方案1】:

假设您正在等待 Google Analytics(分析)加载。现在,您知道当 Google Analytics 加载时,_gaq 将在 DOM 上注册。因此,除了所有其他(更好的)异步选项外,您可以创建一个等待 _gaq 存在的函数:

waitForGaq = function(fn, attemptsLeft) {
    var tick = attemptsLeft || 30; 

    if (typeof(_gaq) != 'object' || !_gaq._getAsyncTracker) {
        //_gaq isn't registered yet
        if (tick > 1) {
            //recurse
            setTimeout(function() {
                waitForGaq(fn, tick - 1);
            }, 100)
        }
        else {
            //no ticks left, log error
            log('failed to load window.gaq');
        }
    }
    else {
        //gaq is loaded, fire fn
        fn();
    }
}

所以,任何需要在注册_gaq后运行的代码,你都可以这样添加到页面中:

waitForGaq(function() {
    //here's all my code...
});

重申:只有当您添加的脚本不提供与库交互的异步方式时,才需要这样的递归。例如,Google Analytics 是一个没有实际意义的例子,因为它提供了一种更简洁的方法:

http://code.google.com/apis/analytics/docs/tracking/asyncTracking.html

【讨论】:

    【解决方案2】:

    试试head.js

    它允许准确定义您想要执行特定代码的时间(在特定脚本之后或所有脚本都已加载之后)。

    更不用说它本身非常整洁。

    【讨论】:

      【解决方案3】:

      在你需要运行的 jQuery 代码的原始代码之后直接注入一个标签

      <script src="foo" id="bar">

      $("#bar").after(
          $("<script>").text("some code")
      );
      

      【讨论】:

        【解决方案4】:

        如果我理解正确,你想做这样的事情:

        <script>
        // your javascript code
        </script>
        <script>
        //your jquery code
        </script>
        

        【讨论】:

        • 我想他说的是等待对象异步加载到 DOM 上?
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-03-26
        • 2012-02-10
        • 1970-01-01
        • 1970-01-01
        • 2020-05-18
        相关资源
        最近更新 更多