Какой самый простой способ отключить элементы управления обратной отправкой, пока страница не загрузится полностью?

#javascript #asp.net

#javascript #asp.net

Вопрос:

У меня есть веб-сайт с интенсивной графикой, и людям с медленным подключением может потребоваться время загрузки. Пока их браузер загружается, у них есть параметры формы. И много раз они будут заполнять форму и нажимать отправить.

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

Я также заглянул в blockui, но он заблокирует всю страницу или только div. Я ищу что-то, что я могу вставить в свою главную страницу и забыть об этом.

Есть идеи?

Ответ №1:

Похоже, что правильным подходом было бы загружать вашу интенсивную графику постфактум, чтобы пользователи все еще могли отправлять формы, как только будут отображены критические элементы DOM. (Я предполагаю, что не жизненно важно, чтобы все изображения загружались до отправки формы?)

Вы могли бы сделать это довольно легко, заставив ваши изображения загружаться в качестве CSS-фонов на основе div body элементов и на основе определенного класса, например:

 body.loaded {background: black url("http://us.battle.net/sc2/static/images/layout/body-bg-baked.jpg") center top no-repeat;}
  

Затем выполните следующий код, чтобы добавить этот класс после загрузки страницы:

 $(window).load(function() {$('body').addClass('loaded');});
  

Это не должно приводить к значительному замедлению загрузки изображений, но при необходимости позволит запускать все элементы DOM вашей страницы и javascript во время загрузки этих изображений.

(Пример jsFiddle)

Комментарии:

1. Это вся тема моего сайта, которая занимает около 2 МБ в графике. Сайт для видеоигр, поэтому у него высококачественная графика. Я бы хотел, чтобы они загружались как можно скорее. Я ищу какой-нибудь JS, который может отключить все кнопки с помощью селектора jquery, а затем снова включить их, когда dom будет выполнен

2. @bladefist: ИМО, даже сайт видеоигр должен работать, пока пользователи ожидают загрузки 2 МБ графики. Что именно вызывает проблему с проверкой? Похоже, вы должны иметь возможность структурировать свою страницу таким образом, чтобы все работало правильно, даже если изображения не загружены.

Ответ №2:

Я сам не мог объяснить ответ. Но я думаю, что в этом есть суть того, что вам нужно сделать. http://www.telerik.com/community/forums/aspnet/ajax/disable-or-gray-out-page-when-displaying-loading-panel.aspx