2015-07-29 2 views
0

Я этот 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 
}); 

Не работает (Иногда работает, когда-то не только в Google Chrome).

я не мог использовать $ (документ) .ready() тоже, но может это исправить с SetTimeout без каких-либо секунд (Magic!)

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

Любая идея, чтобы установить метод загрузки JQuery?

+1

Как насчет не используя Modernizr загрузить JQuery? ' ' – mplungjan

+0

Работает только для старого IE, не все более старые браузеры (например, Netscape) – lucasgabmoreno

+0

Серьезно? Я даже не поддерживаю это. – mplungjan

ответ

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(); 
       }); 
       } 

    }); 
}); 
1

Попробуйте использовать complete CallBack

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'); 
     } 
    } 
]); 
+0

Спасибо, но это слишком медленно, а иногда и не работает. – lucasgabmoreno

+0

Это медленно, потому что вы всегда должны ждать загрузки jQuery, у вашего предыдущего решения было состояние гонки, поэтому он иногда срабатывает. – Andrey

Смежные вопросы