1

我已经实现了这段代码:

<script>
       var mod_PPfix = false;

        Modernizr.load({
            test: Modernizr.csstransitions && Modernizr.input.required,
            nope: ['script1.js', 'script2.js'],
            complete: function () {

                mod_PPfix = true;
                console.log('ppfix');
            }
        });
</script>

几行之后,我放置了另一个脚本

<script>               
   if (!mod_PPfix) {
       $(document).ready(function() { 

           console.log('this should be seen only if modernizr's tests are true');
       });
   }
</script>

现在我真的是一个 javascript 的菜鸟,但我希望从上面的代码中显示第二个,console.log()只有当 modernizr 测试结果为真时。即使测试结果为阴性,仍然会记录第二个日志。

据我所知,在控制台中,第二console.log()条消息出现在第一条消息“ppfix”之前,所以我想这应该是一种加载时间问题,但我真的不知道为什么。我究竟做错了什么?

如果它可以帮助我使用 Jquery 作为库。

谢谢!

4

1 回答 1

0

如果您想在测试为真时查看第二条日志消息,您不是说if (mod_PPfix)吗?如果测试失败,您的版本将记录输出第二条消息(请参阅this fiddle

当您使用 Modernizr.load 时,事情会异步发生,因此第二个<script>可能会在 script1.js 和 script2.js 完成加载之前运行,因此在complete回调触发之前运行。无论您想在一秒钟内做什么,<script>都应该在complete回调中调用。例如

    Modernizr.load({
        test: Modernizr.csstransitions && Modernizr.input.required,
        nope: ['script1.js', 'script2.js'],
        complete: function () {
            initialize_me();
        }
    });

initialize_me()函数将在其他地方定义并且可能具有看起来像的代码

if (Modernizr.csstransitions && Modernizr.input.required) {
    // Use CSS3
} else {
    // Do things that depended on script1.js and script2.js being loaded
}
于 2012-11-19T03:07:21.173 回答