JavaScript脚本完成后加载jQuery脚本

ej83mcc0  于 2022-12-18  发布在  jQuery
关注(0)|答案(4)|浏览(124)

类似于jQuery在文档加载后加载的方式,我需要在JavaScript脚本完成后使用jQuery的某些部分。
我正在从Google Data API加载联系人数据,如果我是对的,那么显示数据的div需要完全加载(通过JavaScript)才能被jQuery访问。
有什么办法可以做到吗?

llew8vvj

llew8vvj1#

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

重申:只有当你要添加的脚本没有提供与库交互的异步方式时,才需要像这样的递归,比如Google Analytics,它提供了一种更干净的方法,是一个没有实际意义的例子:
http://code.google.com/apis/analytics/docs/tracking/asyncTracking.html

dfty9e19

dfty9e192#

尝试head.js
它允许精确地定义何时(在特定脚本或所有脚本加载后)执行特定代码。
更不用说它本身就很整洁。

3htmauhk

3htmauhk3#

在原始标记之后直接插入需要运行的jQuery代码
<script src="foo" id="bar">

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

bfrts1fy4#

如果我理解正确,您需要执行以下操作:

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

相关问题