2009-05-13 3 views
2

JavaScriptが現在処理しているページに機能があります。私は私のページを非Javascriptユーザーと互換性を持たせたいと思っています。 JavaScriptが有効になっている場合はJavaScriptルーチンを使用し、そうでない場合はポストバックを行い、サーバー側でそれを処理させる方法はありますか?あなたはnoscript要素のHTMLタグを活用してみてくださいASP.NET - JavaScriptを使用していないクライアント

答えて

4

このポストバックやクライアントサイドの動作(使用可能かどうかに応じて)がどのようなものであっても、htmlの送信ボタンであると推測する必要がありますか?

もしそうなら、クライアントサイドのもののjavascriptハンドラをボタンに付け、ポストバックを防ぐためにハンドラに「false」を返すようにします。 JavaScriptが有効になっていない場合、ボタンはポストバックをトリガする標準のHTMLフォーム機能を実行し、代わりにサーバー側の処理を行います。

リンクのクリックイベントでjavascriptを実行してクライアント側の処理を行うことで、同様のことを行うことができますが、イベントのリンクをたどるだけでJavaScriptは利用できません。

これらのメソッドは、標準的なHTMLフォームの振る舞いに戻り、javascriptを検出するコードが不要なので、javascriptを持たないブラウザにどのように反応するかに少し優雅です。単にjavascriptを無視してフォームを提出するだけです。

チェックボックスについては、javacript以外のページでのデフォルトの動作は変更をポストバックしないことに注意してください。チェックボックスの状態を変更した場合は、ポストバックのために送信ボタンを押す必要があります.JavaScriptなしでチェックボックス状態の変更をポストバックすることはできません。

asp.net(ドロップダウンリストを含む)のいくつかのコントロールには、クライアントの変更時に自動的にポストバックするオプションがあります。これはjavascriptで行われ、利用できない場合は正常に低下させる唯一の方法はユーザーがクリックすると標準のHTMLポストバックが強制され、サーバーは変更されたコントロール状態に応答します。

チェックボックス/コンボなどに自動ポストバックがない場合、UIに一貫した「フロー」を持たせることができない場合は、UIデザインを再考して、さらにウィザードに移る必要がありますベースのレイアウト。

それはあなたが彼らのブラウザではJavaScriptを使用していないときにそれらを使用可能な体験を提供するために偉大な長さに行っているとして恥であるユーザーのための恐ろしいであるように私はとにかく物事のこれらのタイプで自動ポストバックを無効にします。

+0

ニース、これは私が必要と思うものだと思います。私はそれで少し遊んでみましょう。どうもありがとう! –

+0

こんにちはNeil、CheckBoxコントロールでこれを行う方法の例を表示できますか? onchange javascriptイベントでfalseを返すと、実際にはチェックされた状態は変更されません。 –

+0

私は答えに追加しますが、私はあなたがこれを行うことができるとは思わない。 –

0

控えめなJavaScriptを使用して読んでみることをお勧めします。基本的な考え方は、JavaScriptとAjaxが要件ではなくユーザーエクスペリエンスを拡張する必要があるということです。 JavaScriptコードでは、ボタンをクリックするなどのイベントを乗っ取ってデフォルトの動作を防ぐ必要があります。スクリプトはブラウザ内で処理と応答をリアルタイムで処理する必要があるためです。