我已经实现了这段代码:
<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/