我已经实现了这段代码:
<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作为库。
谢谢!
答案 0 :(得分:0)
如果您想在测试结果为真时看到第二条日志消息,那么您的意思是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
}