代码之家  ›  专栏  ›  技术社区  ›  Russell Mayor

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

  •  3
  • Russell Mayor  · 技术社区  · 16 年前

    我当前的项目是编写一个web应用程序,它相当于一个现有的桌面应用程序。

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

    在web应用程序中,这种情况不会发生:当用户单击链接时,他们的击键就会丢失,直到显示下一页上的表单为止。有没有人有什么办法防止这种情况发生?我是否必须放弃使用单独的页面,而使用AJAX将表单嵌入到页面中,比如 GWT ,还是会有按键丢失的问题?

    4 回复  |  直到 16 年前
        1
  •  6
  •   Spikolynn Ankit    7 年前

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

    如何加速web应用程序以增加响应时间? 你的朋友是阿贾克斯!

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

    相关阅读材料:

        2
  •  1
  •   Jordan Jordan    16 年前

    也许我对这个问题考虑不足,但我会把这个扔出去。。。你可以把你的表单放在一个隐藏的div或类似的容器中(也许给它一个模态的外观/行为?)在链接的单击事件上。这样,表单已经作为页面的一部分加载。它应该马上出现。

    你可以在所有地方找到modal div教程,应该不会太棘手。如果你使用ASP.NET微软的AJAX库中甚至有一个。

        3
  •  0
  •   Joel Coehoorn    16 年前

        4
  •  0
  •   Vineet Jain    7 年前

    我想做你想做的事是很难的。我认为真正的问题是新页面的加载时间太长。您应该考虑缓存页面或对静态组件(如图片等)进行部分缓存,以提高加载时间或预加载页面并使其不可见。(参见 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 .