2014-11-05 2 views
2

У меня есть две страницы на моем веб-сайте, на которых показаны модальные формы. На страницах используется плагин jModal, и все работает хорошо.jquery document ready too slow

Проблема заключается в следующем.

Одна страница, все в порядке, производительность отличная.

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

Этот удар допустим, но результирующая задержка может позволить посетителю щелкнуть ссылки на странице, прежде чем появится модальное окно. Таким образом, посетитель может пропустить модальное окно.

Код находится в пределах $(). Готовность, которая, по моему мнению, вызывает проблему, поскольку страница должна ждать, пока сервер объявлений не закончит показ объявления.

Я удалил $(). Готов, но это просто заставило код вообще не исполняться.

Есть ли способ заблокировать страницу до тех пор, пока не будет готов документ?

+0

DOM ready (например, '$ (function() {})' срабатывает, как только * DOM готов *. Он не должен ждать рекламы. Проблема, вероятно, в предыдущем коде, задерживающем ваш готовый код DOM начиная с стрельбы, поскольку это, вероятно, не работает на раннем этапе. Переместите обработчик DOM до рекламного скрипта. –

ответ

0

Спасибо всем за вашу помощь.

В конце я добавил наложение, быстро, просто, выполняет эту работу.

1

Одним из способов является добавление наложения на ваш сайт, который всегда существует, который вы удаляете с помощью $(). Готов к тому, что это будет поверх всего и не позволит им щелкнуть.

+0

Если вы хотите разрешить изящное падение для людей без JavaScript, такая вещь также может быть размещена внутри тега 'noscript', поэтому он не появится для браузеров, которые никогда не запускают событие 'ready' –

+0

Является ли эта распространенная проблема использованием jQuery? – gilesrpa

1

Я предлагаю этот альтернативный вариант, поскольку это тот, который я обычно выбираю.

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

Например, у вас есть ссылки, открытые пользователю, ожидая jQuery, чтобы скрыть их (обходным путем). Просто сначала скройте их с помощью CSS, а затем, как часть вашего начального jQuery, покажите им (как только он будет полностью инициализирован).

У меня была эта проблема с swiper в пользовательском интерфейсе; У меня был массивный список, ширина которого была бы установлена ​​в соответствии с плагином swiper (при инициализации). Вместо этого я просто установил массивную ширину в моем файле CSS (преднамеренно чрезмерно компенсируя), а затем пусть плагин swiper сделает все. Типичный пользователь не сможет сказать.

Все еще не безупречно, но CSS в этом случае намного быстрее, чем ожидание jQuery, и, в отличие от другого варианта, вам не нужно включать дополнительный оверлей.

1

положить модальное окно в верхней части страницы непосредственно под док готовы