$(document).ready() не срабатывает при вызовах в head.ready()

У меня проблема с использованием jQuery $(document).ready и headjs framework v1.0.3 с функциональностью head.ready, только в Internet Explorer (версия 11, я не могу примерить более старую версию) и только один раз в десять...

Прямо перед </body> Я имею:

head.load('//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js',function() {
    head.load('//ajax.googleapis.com/ajax/libs/jqueryui/1.10.4/jquery-ui.min.js');
    head.ready(function() {
        $(document).ready(function() {
            $('.class').show();
        });
    });
});

А иногда событие $(document).ready не вызывается. Отлично работает на Chrome и Firefox.

$(window).load doesn't work better.

Я пытаюсь поставить head.ready() но зря

head.load('//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js',function() {
    head.load('//ajax.googleapis.com/ajax/libs/jqueryui/1.10.4/jquery-ui.min.js');
});
head.ready(function() {
    $(document).ready(function() {
        $('.class').show();
    });
});

Я нахожу решение, используя head.ready вместо $(document).ready, но я не могу использовать это решение, потому что часть в head.ready(function() {...}); исходит из кода общего доступа с платформами, не использующими headjs.

Кто-нибудь когда-нибудь сталкивался с этой проблемой или есть решение?

1 ответ

Решение

Я предполагаю, что есть условие гонки. Вы можете проверить, находится ли документ в состоянии готовности, так как он готов к работе, поскольку document.ready не будет стрелять

head.ready(function() {
  var readyfunc = function(){
     $('.class').show();
  };

  if (document.readyState === 'complete'){
    readyfunc();
  }else{
    $(document).ready(function() {
      readyfunc();
    });
  }
}

Посмотри, работает ли это.

Другие вопросы по тегам