我一直在实现yepnope脚本加载器,作为modernizr.js库的一部分。之后,我已经成功地加载了jQuery和依赖jQuery的脚本。我是异步加载资源的新手,所以对我来说有点新。我一直在搜索,但以下内容并没有带来太多运气。

我的问题是,当您使用yepnope.js框架时,如何有效地替换$(document).ready()功能,您有何看法?

我的理论是在我的基础库中创建一个适当命名的函数,然后将页面上的该变量设置为包含我现有的$(document).ready()代码的匿名函数。在所有脚本都加载到完整的回调中之后,yepnope将调用此变量。

您是否同意这是一种好方法,还是我完全以错误的方式来对待呢?

(对于那些不知道的情况,yepnope.js的异步性质意味着该文件在yepnope加载程序完成之前调用$或jQuery,并抛出“$ is undefined”错误
第一个问题,希望它是一个好问题。

最佳答案

如果不带yepnope加载jQuery对您来说不是问题,那么有一种更简单的方法。

<script type="text/javascript" src="//ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>

<script>
    $.holdReady(true);

    yepnope.load({
        load: [
            'placeholder.js',
            'jquery-ui.min.js'
        ],
        complete: function (){
            $.holdReady(false);
        }
    });
</script>

10-07 21:40