javascript - Modernizr 什么时候加载脚本?

标签 javascript jquery modernizr

我已经实现了这段代码:

<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 菜鸟,但我希望只有在 Modernizr 测试结果为真时,上面的代码才会显示第二个 console.log() 。即使测试结果为阴性,仍会记录第二个日志。

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

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

谢谢!

最佳答案

如果您想在测试为真时查看第二条日志消息,您的意思不是 if (mod_PPfix) ?如果测试失败,您的版本将记录输出第二条消息(请参阅此 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
}

关于javascript - Modernizr 什么时候加载脚本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13446850/

相关文章:

javascript - 在选择下拉列表中隐藏所选选项

javascript - Backbone JS Turbolinks 未定义问题

ipad - 如何使用 modernizr 检测 iPad 以获取自定义 css

javascript - 如何正确使用本地存储?

javascript - 在 JavaScript 中将变量的属性和值添加到现有对象

javascript - 为什么在 DOMContentLoaded 中设置的数据对象没有保留在 DOM 中?

javascript - XSS:这如何安全?

jquery - 根据容器 div 宽度向 <li> 元素添加类

javascript - 页面顶部生成额外的空白?

javascript - Winston 输出 json 而不是格式化字符串