0

Я изучаю всю асинхронную загрузку сценариев с помощью Modernizr и yepnope.js, и мне интересно, как я могу адаптировать структуру своего приложения для использования асинхронной загрузки скриптов.Структура файлов JavaScript и Modernizr/yepnope

Прямо сейчас структура напоминает это:

... 
<head> 
    <script src=jquery.js></script> 
    <script src=plugin1.js></script> 
    <script src=plugin2.js></script> 
    <script src=plugin3.js></script> 
    <script src=global.js></script> 
</head> 
<body> 

Этот код находится в header.php файл, который require d по всему приложению. В разделе документа тела (другие PHP файлы), я, возможно, некоторые файлы JavaScript, как это:

... 
    <script src=moduleA.js></script> 
    <script src=someScripts.js></script> 
</html> 

Вот упрощенный пример того, что moduleA.js и someScripts.js может содержать:

$(document).ready(function() { 
    $('.searchDate').myCoolPlugin({ /* some options */ }); 
}); 

и someScripts.js:

$(document).ready(function() { 
    $('#departureDate, #arrivalDate').myCoolPlugin({ /* some options */ }); 
}); 

Если я использую Modernizr, в верхней части страницы, я бы удалить другие сценарии плагин и в global.js я бы написать:

Modernizr.load([ 
    { 
     test: $.fn.myCoolPlugin, 
     nope: 'plugin1.js', 
     complete: function() { 
      $(document).ready(function() { 
       $('.filterDates').myCoolPlugin(); 
      } 
     } 
    } 
]); 

Как я могу гарантировать, что myCoolPlugin был загружен модулем timeA.js и someScripts.js? Я понимаю, что я могу обернуть инициализацию плагина в этих файлах Modernizr.load(), но это похоже на ненужное дублирование кода.

ответ

0

Если я правильно понял ваш вопрос, вы хотите выполнить сценарии тела после того, как необходимые скрипты были загружены с помощью Modernizr.

Вы могли бы сделать что-то вроде этого:

// Header script 
var race_won = false; 
var load_body_script = function() { 
    race_won = true; 
}; 

Modernizr.load([ 
    { 
     test: ..your condition.., 
     yep: ..test success.., 
     nope: ..test fail.., 
     complete: function() { 
      $(document).ready(function() { 
       $('.filterDates').myCoolPlugin(); 
       load_body_script(); 
      } 
     } 
    } 
]); 

// Body script 
var body_script = function() { 
    // .. your code here .. 
} 
if (race_won) { 
    body_script(); 
} 
else { 
    load_body_script = body_script; 
} 

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

  • Нет связанных вопросов^_^