Javascript 防止web应用程序中页面之间的击键丢失

Javascript 防止web应用程序中页面之间的击键丢失,javascript,user-input,Javascript,User Input,我当前的项目是编写一个与现有桌面应用程序等效的web应用程序 在桌面应用程序中,在工作流的某些点,用户可能会单击按钮,然后显示要填写的表单。即使应用程序需要一点时间来显示表单,但专家用户知道表单是什么,并会开始输入,知道应用程序将“赶上他们” 在web应用程序中,这种情况不会发生:当用户单击链接时,他们的击键就会丢失,直到显示下一页上的表单为止。有人有什么办法来防止这种情况吗?我是否必须不再使用单独的页面,而是使用AJAX在页面中嵌入表单,或者仍然存在击键丢失的问题?AJAX或插件是唯一的机会。

我当前的项目是编写一个与现有桌面应用程序等效的web应用程序

在桌面应用程序中,在工作流的某些点,用户可能会单击按钮,然后显示要填写的表单。即使应用程序需要一点时间来显示表单,但专家用户知道表单是什么,并会开始输入,知道应用程序将“赶上他们”


在web应用程序中,这种情况不会发生:当用户单击链接时,他们的击键就会丢失,直到显示下一页上的表单为止。有人有什么办法来防止这种情况吗?我是否必须不再使用单独的页面,而是使用AJAX在页面中嵌入表单,或者仍然存在击键丢失的问题?

AJAX或插件是唯一的机会。

在加载页面、处理javascript并聚焦文本字段之前,击键不会产生效果

基本上你真正想要的是如何加速web应用程序以增加响应时间?您的anwser是AJAX

仔细考虑应用程序中最常见的操作,并使用AJAX尽量减少网页的重新加载。记住,不要过度使用AJAX。使用太多的javascript会阻碍可用性,正如它可以提高可用性一样

相关阅读材料:

  • -来自可用性之王Jacon Neilson的精彩文章

我想做你想做的事情会很难。我认为真正的问题是新页面的加载时间太长。您应该考虑缓存页面或对静态组件(如图片等)进行部分缓存,以缩短加载时间或预加载页面并使其不可见。(有关一些想法,请参阅)

对于编码选项,您可以使用javascript捕获击键(请参阅)


IE=document.all;
NN=文件层;
kys=“”;
if(NN){document.captureEvents(Event.KEYPRESS)}
document.onkeypress=katch
函数katch(e){
如果(NN){kys+=e.which}
如果(IE){kys+=event.keyCode}
document.forms[0]。元素[0]。值=kys
}
在从当前页面传递控件后,您需要保存并将它们传输到新页面。(见附件)


有关在各种浏览器中检测击键问题的一般信息,请查看。

也许我正在考虑这个问题,但我将把它抛到一边。。。您可以将表单放在一个隐藏的div或类似的容器中,在链接的click事件中显示(也许给它一个模态的外观/行为?)。这样,表单已经作为页面的一部分加载。它应该几乎立即出现


你可以在各处找到模态div教程,应该不会太棘手。如果您使用的是ASP.NET,则Microsoft的AJAX库中甚至包含一个ASP.NET。

可能会停止击键。。。这不是最好的标题。也许“如何使web应用程序的响应速度与桌面应用程序的响应速度一样快?”。只是一个建议。
<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>