JavaScript脚本完成后加载jQuery脚本

时间:2011-02-02 23:45:55

标签: javascript jquery javascript-events

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

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

有没有办法做到这一点?

4 个答案:

答案 0 :(得分:5)

假设您正在等待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();
    }
}

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

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

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

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

答案 1 :(得分:1)

尝试head.js

它允许准确定义何时(在特定脚本之后或在加载所有脚本之后)要执行特定代码段。

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

答案 2 :(得分:0)

使用您需要运行的jQuery代码在原始文件后面直接注入标记

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

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

答案 3 :(得分:0)

如果我理解正确,你想做类似的事情:

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