Предотвращение потери нажатий клавиш между страницами в веб-приложении - PullRequest
4 голосов
/ 15 сентября 2008

Мой текущий проект заключается в написании веб-приложения, которое является эквивалентом существующего настольного приложения.

В настольном приложении в определенные моменты рабочего процесса пользователь может нажать кнопку, а затем отобразить форму для заполнения. Даже если приложению требуется немного времени для отображения формы, опытные пользователи знают, что такое форма будет и начнет печатать, зная, что приложение «догонит их».

В веб-приложении этого не происходит: когда пользователь щелкает ссылку, его нажатия клавиш теряются до тех пор, пока не отобразится форма на следующей странице. У кого-нибудь есть какие-то хитрости для предотвращения этого? Должен ли я отказаться от использования отдельных страниц и использовать AJAX для встраивания формы в страницу, используя что-то вроде GWT , или это все еще будет иметь проблему с потерянными нажатиями клавиш?

Ответы [ 4 ]

6 голосов
/ 15 сентября 2008

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

По сути, вы действительно спрашиваете; как мне ускорить работу веб-приложения, чтобы увеличить время отклика? Ваш ответ - AJAX!

Тщательно продумайте наиболее распространенные действия в приложении и используйте AJAX для минимизации перезагрузки веб-страниц. Помните, не злоупотребляйте AJAX. Использование слишком большого количества javascript может ограничить удобство использования так же, как и улучшить его.

Связанные материалы для чтения:

1 голос
/ 16 сентября 2008

Возможно, я плохо обдумываю проблему, но я добавлю это туда ... Вы можете просто поместить свою форму в скрытый div или подобный контейнер, который вы показываете (возможно, придаете ему модальный вид / поведение?) событие клика по ссылке. Таким образом, форма уже загружена как часть страницы. Это должно появиться почти мгновенно.

Повсюду можно найти учебники по модальному div, не должно быть слишком сложно. Если вы используете ASP.NET, в библиотеку Microsoft AJAX есть даже один.

0 голосов
/ 15 сентября 2008

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

Для вариантов кодирования вы можете использовать javascript для захвата нажатий клавиш (см. Обнаружение различных нажатий клавиш )

<html><head>
<script language=javascript>
IE=document.all;
NN=document.layers;
kys="";
if (NN){document.captureEvents(Event.KEYPRESS)}
document.onkeypress=katch
function katch(e){
if (NN){kys+=e.which}
if (IE){kys+=event.keyCode}
document.forms[0].elements[0].value=kys
}
</script>
</head>
<body>
<form><input></form>
</body>
</html>

Вам нужно будет сохранить и затем перенести их на новую страницу после того, как управление перейдет с текущей страницы. (см. Сохранить изменения при закрытии браузера или при выходе из страницы )

Для получения общей информации о проблемах с обнаружением нажатий клавиш в различных браузерах см. Javascript - Обнаружение нажатий клавиш .

0 голосов
/ 15 сентября 2008

AJAX или плагин - ваши единственные шансы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...