如何在javascript函数中动态加载jQuery,调用另一个函数,并返回该函数的返回值?

时间:2012-03-07 15:17:18

标签: javascript jquery

我有一个使用jQuery的函数。我需要动态地用JavaScript注入jQuery并让该函数返回该函数的返回值。我想做点什么

(function(){
    var jQueryLoaded = false;
    var returnValue;
    if (!window.jQuery) {
        var script = document.createElement('script');
        script.type = 'text/javascript';
        script.src = 'http://code.jquery.com/jquery-1.7.1.min.js';
        script.onreadystatechange= function () {
            if (this.readyState == 'loaded' || this.readyState == 'complete')
                onJQueryLoaded();
        };
        script.onload = onJQueryLoaded;
        document.getElementsByTagName('head')[0].appendChild(script);
    }
    else {
        returnValue = myJQueryFunction();
        if (typeof(returnValue) == 'undefined')
            returnValue = true;
        return returnValue;
    }
    function myJQueryFunction() {
        // do something
    }
    function onJQueryLoaded() {
        if (jQueryLoaded)
            return;
        jQueryLoaded = true;
        var $ = jQuery;
        returnValue = myJQueryFunction();
        if (typeof(returnValue) == 'undefined')
            returnValue = true;
    }
    while (typeof(returnValue) == 'undefined'); // wait until onJQueryLoaded returns
    return returnValue;
})();

onJQueryLoaded循环期间未调用while

有没有办法让我的基函数在返回之前等到onJQueryLoaded被调用?

3 个答案:

答案 0 :(得分:0)

尝试设置计时器/间隔,然后检查。只要执行一个取决于时间的回调(即加载,渲染,下载,上传的内容),那就完成了你正在寻找的东西。 或者只是将它放在jQuery本身。

答案 1 :(得分:0)

你需要将一个函数指针传递给你的myJQueryFunction()。

然后,您可以在此方法中调用该函数。

类似

function myJQueryFunction(funcPoint) {
        funcPoint();
    }

returnValue = myJQueryFunction(function() {return true;});

语法可能需要进一步研究,因为这只是我的头脑。

修改

与此相关的方案更具相关性

var func = function() {return true;};

...stuff......

function myJQueryFunction(funcPoint) {
        funcPoint();
    }

returnValue = myJQueryFunction(func);

更多修改

根据我在下面的评论,如果你想要的是在JQuery加载(准备好)之后触发一个函数你想要使用JQuery就绪函数

$(document).ready(function() {do you stuff here});

Jquery Ready()

答案 2 :(得分:0)

当然,您可以通过...之类的方法解决这个简单得多的问题。

加载jquery脚本...

(function() {
    if (!window.jQuery) {
            var script = document.createElement('script');
            script.type = 'text/javascript';
            script.src = 'http://code.jquery.com/jquery-1.7.1.min.js';
        }
})();

从此处使用jquery的“ onload”功能...

$(function() { console.log("jquery is now loaded"); });