2012-01-02 4 views
6

Он появляется на панели сети при загрузке скриптов через Modernizr.load, фактически не блокирует $ (document) .ready().

Итак, теоретически предположим, что я добавляю json2.js через Modernizr, а другой разработчик пытается использовать JSON.parse в $ (document) .ready(), их сценарий может действительно сломаться из-за состояния гонки.

Можно ли исправить это, не пытаясь полировать все проверки кода?

ответ

4

Я бы так подумал: использование Modernizr (и браузерных тестов) для загрузки файлов Javascript - это очень общее дизайнерское решение, о котором каждый должен знать в своей команде.

Однако вы, вероятно, захотите реализовать (если еще не сделали) какую-то инициализацию своего приложения, которое должно быть последним, что нужно запустить - после того, как все было загружено. Эта инициализация может быть выполнена в обратном вызове yepnope, по-видимому, даже в оболочке $(document).ready().

Yepnope состояния в этом контексте в «общих»: подводных камней

Просто потому, что ваш сценарий будет сделано, не означает, что документ готов. Не забывайте, что вы, , можете использовать обратные вызовы документов, готовые к обратным вызовам yepnope. Если вы играете с DOM, мы бы сильно призываем вас сделать это, потому что ваша тестовая среда может действовать иначе, чем ваш производственный сервер, скорость резко .


И для полноты картины:

Без проверки их дальше, здесь несколько других идей о том, как бороться с document.ready + Modernizr.load: How can I use yepnope.js with $(document).ready() effectively? и https://stackoverflow.com/a/6767886/564721

+0

Мы кончались используя Modernizr.load() для чисто эстетических прокладок. Слишком больно использовать для функциональных функций. – voidvector