Захватывать щелчки мыши в DOM с помощью JQuery? - PullRequest
2 голосов
/ 31 декабря 2008

Фон

Я использую отправку форм 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.

Я должен показывать пользователям только значимую информацию. Внутренних идентификаторов базы данных нет. Я должен только позволить пользователям взаимодействовать с приложением осмысленными способами. Произвольное редактирование адресной строки не является одним из них.

Люди постоянно делают опечатки. С точки зрения системы, однако, нет никакой разницы между опечаткой в ​​адресной строке и ошибкой в ​​логике приложения, и я бы предпочел не возлагать ответственность за решение, какая из них только что произошла, на пользователей.

1 Ответ

6 голосов
/ 31 декабря 2008

Краткий ответ? Не могу этого сделать.

Длинный ответ? События мыши Javascript . Все еще не могу этого сделать.

Возникает вопрос: вам нужно для использования POST или просто хотите ? Единственная причина, по которой вам нужно это длина строки запроса. Что касается желания, вы упоминаете «контроль ввода пользователя». Что это значит точно?

Вы никогда не должны полагаться на браузер для проверки ввода. Вы можете сделать это там для удобства, но сервер всегда должен проверять ввод.

Или причина эстетическая (т. Е. Более короткие, "более приятные" URL)?

Вы заново изобретаете колесо, которое является гиперссылками. Я просто пытаюсь убедиться, что у вас есть чертовски веская причина для этого, потому что это контрпродуктивно, и вы никогда не получите такую ​​же поддержку и совместимость браузера, как у настоящих гиперссылок. Кроме того, вы, вероятно, просто раздражаете своих пользователей тем, что вещи, которые они ожидают, будут работать, а не работать. Не хорошо.

...