【问题标题】:When does Modernizr load the script?Modernizr 何时加载脚本?
【发布时间】:2012-11-06 23:09:03
【问题描述】:

我已经实现了这段代码:

<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 作为库。

谢谢!

【问题讨论】:

    标签: javascript jquery modernizr


    【解决方案1】:

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

    当您使用 Modernizr.load 时,事情会异步发生,因此第二个 &lt;script&gt; 可能会在 script1.js 和 script2.js 完成加载之前运行,因此会在 complete 回调触发之前运行。无论您想在第二个&lt;script&gt; 中做什么,都应该调用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
    }
    

    【讨论】:

    • 你不是说 if (mod_PPfix) 吗?对不起,我知道这有点曲折,我的意思是“如果modernizr 验证这两个壮举都不是实现然后它将加载我列出的 2 个脚本并设置为 mod_PPfix = true"。再次仅当两者都不支持时,加载脚本并执行完整的功能。如果功能结果支持,那么他将什么也不做,不会加载脚本,也不会执行完整的功能。我发布的代码是否符合我的意思?
    • 无论你想在第二个 我真的是一个新手,你到底是什么意思?谢谢你的回答!
    • 好的,现在我明白了。实际上,无论测试通过还是失败,complete 子句都会运行——无论它们是完整的。我用从complete 调用初始化函数的示例编辑了我的答案。
    • 现在说得通了。现在知道complete 做了什么,我可以继续我需要的东西。我问的代码和问题对于我需要的东西是错误的,但您的输入仍然帮助我摆脱了这个问题,所以无论如何我都接受您的回答。非常感谢,加油! ;)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多