私はセレクトボックスナビゲーターをやっていますが、javascriptリダイレクトを行うか、フォームを送信してそこからリダイレクトする方が良いかどうか疑問に思っています. それぞれの長所と短所は?
3 に答える
HTTP リダイレクト:
- 長所: ユーザーのアクティビティをログに記録できます。
- 短所: ユーザーが効果的にリダイレクトされるまで、ターンアラウンド サイクルが 1 回余分に発生します。
JavaScript リダイレクト:
- 長所: ユーザーはすぐにリダイレクトされます
- 短所: AJAX を使用しない限り、ユーザーのアクティビティをログに記録できません。ユーザーが JavaScript を無効にしている場合、リダイレクトされません。
この場合、私はこの問題を解決するために控えめな JavaScriptを使用する傾向があります。次に、ページが読み込まれた後、Javascript はそのボタンを非表示にし、選択ボックスに変更機能を追加し、AJAX 要求を送信してアクティビティを記録します。
そうすれば、2 つの世界を最大限に活用できます :)
リストのアイテムを選択してナビゲートするようなことを意味する場合は、次の両方を実行できます。
- ターゲット ページを直接指す GET を使用してフォームを構成します。
- js がサポートされている場合は、値を選択するときに「submit」が呼び出されるようにします。js がサポートされていない場合は、ユーザーが引き続きアプリケーションを操作できるように、選択/移動/開くボタンを表示する必要があります。
注:上記のアプローチは、ターゲット ページに直接移動します。これは、サーバーからリダイレクトを送信するのとは異なります。これは、処理される追加のリクエストが発生し、操作に余分な遅延が追加され、サーバーによって処理されるリクエストが増えます。これはナビゲート シナリオです。このためにサーバー側に移動する必要はありません (少なくとも、追加の特定の要件がなければ)。
次のようなことをするときは注意してください。
<select id="test" onchange="doAction();">
<option value='http://...'>...</option>
<option value='http://...'>...</option>
<option value='http://...'>...</option>
<option value='http://...'>...</option>
</select>
<script type="text/javascript">
function doACtion() {
window.location = document.getElementById('test');
}
</script>
IE ユーザーがキーボードで選択をナビゲートしようとすると、誤ってアクションがトリガーされるため、アクセシビリティが非常に低くなります。これは、障害のあるユーザーにとって特に厄介です。リダイレクトしようとしても、最初のオプション以外にアクセスできないからです。