2008-09-14 10 views
3

Mein aktuelles Projekt besteht darin, eine Webanwendung zu schreiben, die einer vorhandenen Desktopanwendung entspricht.Verhindern des Verlustes von Tastenanschlägen zwischen Seiten in einer Webanwendung

In der Desktop-App kann der Benutzer an bestimmten Punkten im Workflow auf eine Schaltfläche klicken und dann ein Formular zum Ausfüllen anzeigen. Auch wenn es ein wenig dauert, bis die App das Formular anzeigt, wissen die Experten Das Formular wird und wird anfangen zu tippen, wissend, dass die App sie "einholen" wird.

In einer Webanwendung passiert das nicht: Wenn der Benutzer auf einen Link klickt, gehen seine Tastatureingaben verloren, bis das Formular auf der folgenden Seite angezeigt wird. Hat jemand Tricks, um das zu verhindern? Muss ich von der Verwendung separater Seiten weggehen und AJAX verwenden, um das Formular mit etwas wie GWT in die Seite einzubetten, oder wird das immer noch das Problem verlorener Tastenanschläge haben?

+0

Vielleicht stoppen Tastenanschläge ... ist nicht der beste Titel. Vielleicht "Wie kann ich eine Webanwendung so schnell wie eine Desktopanwendung reagieren lassen?". Nur ein Vorschlag. – andyuk

Antwort

0

AJAX oder Plugin sind Ihre einzigen Chancen.

6

Tastatureingaben werden erst wirksam, wenn die Seite geladen wurde, JavaScript verarbeitet wurde und das Textfeld dann fokussiert ist.

Im Grunde ist das, was Sie wirklich fragen, ist; Wie beschleunige ich eine Webanwendung, um die Antwortzeiten zu erhöhen? Ihr Verstärker ist AJAX!

Denken Sie sorgfältig über die häufigsten Aktionen in der Anwendung nach und verwenden Sie AJAX, um das erneute Laden von Webseiten zu minimieren. Denken Sie daran, AJAX nicht übermäßig zu verwenden. Zu viel Javascript kann die Benutzerfreundlichkeit ebenso behindern wie sie es verbessern kann.

Verwandte Lesestoff:

0

ich denke, es sehr schwierig sein wird zu tun, was Sie wollen. Ich nehme an, dass das eigentliche Problem darin besteht, dass das Laden der neuen Seite zu lange dauert. Sie sollten die Seite zwischenspeichern oder partielles Caching für statische Komponenten wie Bilder usw. durchführen, um die Ladezeit zu verbessern oder die Seite vorab zu laden und unsichtbar zu machen. (Siehe Simple Tricks for More Usable Forms für einige Ideen)

Für Optionen Codierung Sie Javascript verwenden, könnten die Tastenanschläge aufzeichnen zu können (siehe 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> 

Sie müssen speichern und sie dann übertragen auf die neue Seite nach geht die Steuerung von die aktuelle Seite (siehe Save Changes on Close of Browser or when exiting the page)

Einige allgemeine Informationen zu Problemen bei der Erkennung von Tastenanschlägen in den verschiedenen Browsern finden Sie unter Javascript - Detecting keystrokes.

1

Vielleicht denke ich über das Problem nach, aber ich werde das hier rauswerfen ... Sie könnten Ihr Formular einfach in einen versteckten div oder ähnlichen Container legen, den Sie zeigen (vielleicht ein modales Aussehen/Verhalten?) auf das Klickereignis des Links. Auf diese Weise wird das Formular bereits als Teil der Seite geladen. Es sollte fast sofort erscheinen.

Sie können Modal Div Tutorials überall finden, sollte nicht zu schwierig sein. Wenn Sie ASP.NET verwenden, ist sogar eines in der AJAX-Bibliothek von Microsoft enthalten.