2008-09-14 10 views
3

私の現在のプロジェクトは、既存のデスクトップアプリケーションと同等のWebアプリケーションを作成することです。Webアプリケーションのページ間でキーストロークが発生しないようにする

ワークフローの特定のポイントで、ユーザーがボタンをクリックして記入するフォームを表示する可能性があります。アプリがフォームを表示するのに少し時間がかかっても、フォームは、アプリケーションが「それに追いつく」ことを知りながら、入力され、入力を開始します。

Webアプリケーションでは、これは起こりません。ユーザーがリンクをクリックすると、次のページのフォームが表示されるまでキーストロークが失われます。誰にもこれを防ぐための罠がありますか?別のページを使用することから離れて、AJAXを使用してGWTのような形式でページにフォームを埋め込む必要がありますか、それでもキーストロークが失われるという問題はありますか?

+0

おそらくキーストップを停止しています...最高のタイトルではありません。おそらく、「Webアプリケーションをデスクトップアプリケーションほど速く応答させるにはどうすればいいのでしょうか?」ちょうど提案。 – andyuk

答えて

0

AJAXまたはプラグインがあなたの唯一のチャンスです。

6

キーストロークは、ページが読み込まれ、JavaScriptが処理され、テキストフィールドがフォーカスされるまで効果がありません。

基本的にあなたが本当に求めているのは、 どのようにWebアプリケーションを高速化して応答時間を延ばすことができますか?アンカーはAJAXです!

アプリケーションで最も一般的な操作を慎重に考え、AJAXを使用してウェブページのリロードを最小限に抑えます。 AJAXの過剰使用は避けてください。あまりにも多くのjavascriptを使用すると、使いやすさを向上させることができます。

関連読み物:

0

私はあなたがやりたいことはかなり難しいだろうと思います。本当の問題は、新しいページを読み込むには時間がかかりすぎるということです。読み込み時間を短縮したり、ページをプリロードして非表示にしたりするために、ページのキャッシング、ピクチャなどの静的コンポーネントの部分的なキャッシングを行う必要があります。

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

Detecting various Keystrokeを参照)を使用すると、キーストロークをキャプチャするためにJavaScriptを使用できるオプションを符号化するために

(いくつかのアイデアのためのSimple Tricks for More Usable Formsを参照してください)あなたが保存し、コントロールから経過した後に新しいページに転送する必要があります。現在のページ。 (Save Changes on Close of Browser or when exiting the pageを参照)

さまざまなブラウザでのキーストロークの検出に関する一般的な情報については、Javascript - Detecting keystrokesを参照してください。

1

おそらく私は問題を考えていますが、これをそこに投げ捨ててしまいます。隠しdivや表示されている同様のコンテナの中にフォームを置くことができます(おそらくモーダルルック/ビヘイビアですか?リンクのクリックイベントでそうすれば、フォームはすでにページの一部として読み込まれています。ほぼ即座に表示されるはずです。

モダールのdivチュートリアルは、場所のいたるところにあります。面倒なことはありません。 ASP.NETを使用している場合は、MicrosoftのAJAXライブラリに含まれているものもあります。

関連する問題