2008-09-14 28 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库中。