2008-09-14 39 views
3

我目前的項目是編寫一個與現有桌面應用程序等效的Web應用程序。防止網頁應用程序中的頁面之間擊鍵丟失

在桌面應用程序中,工作流中的某些點用戶可能會點擊一個按鈕,然後顯示一個表單來填寫。即使應用程序需要一些時間來顯示錶單,專家用戶也會知道該表單將開始輸入,並知道應用程序將「趕上它們」。

在Web應用程序中,這種情況不會發生:當用戶單擊一個鏈接時,它們的擊鍵就會丟失,直到下一頁的表單顯示爲止。有沒有人有任何技巧來防止這種情況?我是否必須避免使用單獨的頁面,並使用AJAX將表單嵌入到頁面中,使用類似GWT的內容,還是仍然存在按鍵丟失的問題?

+0

也許停止按鍵......不是最好的標題。也許「我如何讓Web應用程序的響應速度與桌面應用程序一樣快?」。只是一個建議。 – andyuk 2008-09-14 22:47:34

回答

0

AJAX或插件是你唯一的機會。

6

在頁面加載之前,擊鍵不會產生效果,javascript已經被處理,然後文本字段被聚焦。

基本上你真正問的是什麼; 如何加快Web應用程序以增加響應時間?你的anwser是AJAX!

仔細想想應用程序中最常見的操作,並使用AJAX來最小化重新加載網頁。請記住,不要過度使用AJAX。使用太多的javascript可以儘可能地改善可用性。

相關閱讀材料:

0

我認爲這將是挺難做你想做的。我認爲真正的問題是新頁面加載時間過長。您應該查看緩存頁面或對靜態組件(如圖片等)執行部分緩存以提高加載時間或預加載頁面並使其不可見。 (見Simple Tricks for More Usable Forms的一些想法)

對於代碼,你可以使用JavaScript來捕獲擊鍵選項(參見Detecting various Keystroke

<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> 

您需要保存,然後將它們控制從過去之後轉移到新頁當前頁面。 (請參閱Save Changes on Close of Browser or when exiting the page

有關在各種瀏覽器中檢測按鍵問題的一些常規信息,請參見Javascript - Detecting keystrokes

1

也許我正在考慮這個問題,但我會把它扔到那裏......你可以把你的表單放在你展示的隱藏的div或類似的容器中(也許給它一個模態的外觀/行爲?)在鏈接的點擊事件上。這樣窗體就已經作爲頁面的一部分加載了。它應該幾乎立即出現。

你可以在各地找到模態div教程,不應該太棘手。如果你使用的是ASP.NET,那麼即使有一個包含在微軟的AJAX庫中。