在Modernizr调用之后$(window).load()...不工作

时间:2015-07-29 13:54:23

标签: javascript jquery window modernizr

我有这个HTML

<head>
<script src="modernizr.js"></script>
<script>
    Modernizr.load([{
        // jQuery
        test: document.getElementsByClassName, // IE>8
        nope: 'js/jquery-1.11.3.min.js',
        yep: 'js/jquery-2.1.4.min.js'
        },{
        test: Modernizr.somefunction,
        load: 'somecode.js'
    }
</script>
</head>

和somecode.js

$(window).load(function(){
   //somecode
});

不起作用(有时可行,有时不仅适用于谷歌浏览器)。

我也不能使用$(document).ready(),但可以使用setTimeout修复它而没有秒(魔术!)

$(document)ready(function(){
   setTimeout(function(){
      // some code
   });
});

有什么想法修复jQuery加载方法吗?

2 个答案:

答案 0 :(得分:1)

尝试使用complete回调

Modernizr.load([{
        // jQuery
        test: document.getElementsByClassName, // IE>8
        nope: 'js/jquery-1.11.3.min.js',
        yep: 'js/jquery-2.1.4.min.js',
        complete: function () {
            Modernizr.load('somecode.js');
        }
    }
]);

答案 1 :(得分:0)

有时,Modernizr会在加载一些小物体后工作。

要修复它:

$(document)ready(function(){
   setTimeout(function(){

      function NewFunction(){
         // some code
         }
      // For Tags action
      if($('selector').find('otherselector').length > 0 ){
          NewFunction();
          }else{
             $('selector').load(function(){
                NewFunction(); 
                 });
              }
        // For Attributes action      
      if((typeof($('selector').attr('attributename')) === 'undefined') || ($('selector').attr('attributename') === null)){
          NewFunction();
          }else{
             $('selector').load(function(){
                NewFunction(); 
                 }); 
              }
        // Width | Height img
        if($('imgselector').height() !== '0px'){
            NewFunction();
          }else{
             $('imgselector').load(function(){
                NewFunction(); 
                 });
              }

   });
});