バックグラウンド
Webアプリケーション内で引数を連結したリンクの代わりに、POSTフォームの送信を使用しているので、入力を制御できます。
残念ながら、これは、ユーザーが知っているクイックショートカットを使用して、コントロールクリックやミドルクリックなどの新しいウィンドウでリンクを開くことができないことを意味します。
問題
W3C DOMマウスイベント仕様に基づいて、jQueryを使用してマウス入力とさまざまなコードキーをキャプチャするための実行可能な方法があると思われるものがあります。
$("span#clickspan").click( function(event) {
buttonpress = event.button;
ctrlpress = event.ctrlKey;
$("#clickresult").empty();
$("#clickresult").append("<p>Click!</p>");
$("#clickresult").append("<p>Button # " + buttonpress + " pressed!</p>");
if (ctrlpress) {
$("#clickresult").append("<p>Control-click!</p>");
}
//form submission code would go here
event.preventDefault();
}
);
この方法でコントロールクリックをキャプチャでき(Firefox 3およびIE7でテスト済み)、マウスボタン#0からの左クリックが正しく(?)報告されますが、何らかの理由で、このコードはまだ中クリックをキャプチャしていませんスパン、および右クリックでもコンテキストメニューがポップアップ表示されます。少なくともミドルクリックをキャプチャしたいと思います。
誰かがそこで助けることができますか?
「制御」とは
引数が連結されたGET送信/リンクの問題は、誰でもアドレスバーを編集して、何でも入力できることです。サーバー側の認証と検証についてはすでに心配しています。そういうわけで私はPOSTで働きたいのです。
意味のある情報だけをユーザーに表示する必要があります。内部データベースIDはそうではありません。ユーザーが意味のある方法でアプリケーションを操作できるようにする必要があります。アドレスバーを任意に編集することは、それらの1つではありません。
人々はいつもタイプミスをします。ただし、システムの観点からは、アドレスバーのタイプミスとアプリケーションロジックの欠陥に違いはなく、どちらが発生したかをユーザーに判断する責任を負わせたくはありません。