Фон
Я использую отправку форм POST вместо ссылок с объединенными аргументами в веб-приложении, чтобы я мог контролировать ввод.
К сожалению, это означает, что пользователи не могут использовать известные им быстрые клавиши, чтобы открывать ссылки в новых окнах, например, щелчок мышью по нажатию клавиши управления или щелчок средней кнопкой мыши.
Проблема
У меня есть, как мне кажется, удобный способ использовать jQuery для захвата ввода с помощью мыши и различных клавиш аккордов на основе спецификации событий мыши W3C DOM :
$("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.
Я должен показывать пользователям только значимую информацию. Внутренних идентификаторов базы данных нет. Я должен только позволить пользователям взаимодействовать с приложением осмысленными способами. Произвольное редактирование адресной строки не является одним из них.
Люди постоянно делают опечатки. С точки зрения системы, однако, нет никакой разницы между опечаткой в адресной строке и ошибкой в логике приложения, и я бы предпочел не возлагать ответственность за решение, какая из них только что произошла, на пользователей.