Открыть список
Как стать автором
Обновить

Комментарии 183

и еще процентов 80% жмут повторно если сервер не отвечает в течении секунд 5…
а это кстати помогает.
потому что на второй запрос может ответить другой сервер, который будет более быстрым.
Из истории:
«Мотороллер не мой, я просто разместил объяву»
мопед же!
Она до сих пор живая, о ужас!
да, только потом оба сервера в итоге вернут какой-то ответ.
чаще из-за траблов провайдера ответ теряется.
то есть если сервер не отвечает в течение 5 секунд, то ответ теряется?
причины могут быть разные, но клиенту пофигу.
Первый не вернет, если запрос повторить а первый еще не закончился
далеко не факт
Факт, браузер отменяет запросы при переходе на ссылку или повторном запросе этой же страницы, то что там сервер уже будет делать его не волнует. Сервер не вернет запрос, некуда будет возвращать.
Может и не вернёт, но внутреннее-то состояние своё может и изменить. Проще говоря, покупку не покажет (вы не дождались показа), но оформит (кликнули).

Нет, я знаю, что GET-запрос не должен менять внутреннее состояние веб-приложения… Но кто гарантирует, что в данном конкретном случае всё сделано правильно?
На мой взгляд, если программист делает обновление объектов на сервере по методу GET, то он не имеет ни малейшего права ругать пользователя за двойной клик по ссылке :))
сервер конкурентов?
как там было — если клиент не дозвонился до тебя, значит он дозвонится до твоих конкурентов…
а еще через 5-10 секунд начинается паника и количество кликов становится около 10…
часто такое наблюдаю у операторов call-центра =)
> процентов 80%
Процентов 80 процентов 0_о
То есть все 160? В кораблях НЛО тоже повторно жмут если корабль секунды две не отвечает или завис?
Бррррр, ну начал печатать, задумался, продолжил печатать с новыми мыслями. Мария Ивановна, только двойку не ставьте за контрольную… Я исправлюсь, честно, честно!!!
От автора бессмертного «кто напишет комент тот лох»
как ты остроумен…
А как решали проблему, интересно? Первое, что в голову приходит — disable'ить ссылку на секунду…
На фронтенде — да. На бекенде немного сложней
Решение зависит от конкретной задачи.
Для некоторых ситуаций и фронтэнд фиксов хватит. Вы написали «у которых дублировалась информация о заказе». Исходя из этой фразы предположить вариант выхода из конкретной ситуации довольно сложно.
Проблема даблклика присутствует в веб-приложениях повсеместно, это не секрет, а пример можно было бы и более развернутый написать, для наглядности.
«Внимание. У вас уже имеется данный товар в корзине, хотите добавить еще один — такой же?» «Да/Нет» и все… всего лишь проверку одинаковых товаров сделать.
Такое решение тоже годиться не под каждую задачу.
Лишние выскакивающие уведомления могут быть на внутрикорпоративных системах, где лучше помозолить зрительные рецепторы юзеру для достижения производительности его труда :) А на «массмаркет» площадках в данном вопросе прежде всего юзерфрендли, отсев лишних событий — забота администрации сайта (в конечном итоге разработчиков), а не клиента.
И вот юзер соображает как этого, ничего не было, а тут уже второй, решает, что магазин глючный и сваливает к конкурентам
Ога или когда смотрит на свой чек и видит там двойную цену и думает что его накололи и даже не предупредили… и сваливает к конкурентам…

Я написал лишь как пример…
Текст кстати может быть иной, например: «Скорее всего, вы случайно нажали на ссылку два раза, и товар добавился в вашу корзину, хотите ли добавить еще один такой же?»
Такой вариант, да, более приемлем.
А почему это нужно решать на бакенде? Проблема-то вроде бы чисто фронтэндовая.
На фронтенде нет javascript — как решите?
Насколько я понимаю, фронтенд — это не только «браузерная сторона», но и весь интерфейс вообще.

Решение тут же было — добавить уникальный идентификатор запроса, или хотя бы обрабатывать тот же самый защитный токен, что и для защиты от CSRF.
Я по контексту решил, что тут фронтенд=клиент-сайд
Можно отправлять уникальный идентификатор клика так, что бы два подряд идущих клика шли с одним и тем же идентификатором.
Как именно сделать такое — зависит от конкретной системы.
видел решение, когда ссылка/кнопка/картинка пряталась, а на её месте появлялся или текст «Please wait...» или какая-то анимированная гифка
Что в случае обрыва связи/плохого канала/падения сервера выливается в геморрой с обновлением страницы
Для этого есть каллбак функции которые реагируют на ошибки.
Ну, мы-то это знаем :) А вот на практике…
и которые порой не вызываются, потому что сервер уже пятую минуту думает или соединение залипло.
Ну да, решение — вручную реализовывать таймаут.
пример на jQuery:
var params = {
    data: {blah-blah},
    onsuccess: successFunction,
    onerror: errorFunction,
    timeout: 100 // 100 ms
    // complete(XMLHttpRequest, textStatus) - еще такая есть, где textStatus = [ "success", "notmodified", "error", "timeout", "parsererror"]
};
$.get( url,  params )

Может написать код для других библиотек?
Как насчет ситуации, когда timeout не вызывается? Например, потому что таймаут — вообще понятие больше философское, чем сугубо техническое. Например, есть таймаут на коннект, есть таймаут на получение очередной порции данных и т.п. А для пользователя таймаут — это полное завершение всех действий в броузере и однозначный визуальный фидбек по нему.

С технческой т.з. таймаут еще не наступил, а пользователь уже ерзает по столу.
А если метеорит упадет и земле придет конец? Таймаут для того чтоб завершить текущий запрос при «гипотетический» ошибке и показать кнопочку пользователю чтоб он мог сделать еще один.
Таймаут — это по сути ответ был на камент dmitriid выше. Подождал немного, если ответа нет (когда данные начинают качаться тоже можно определить), то даем возможность повторить попытку.
Если стоит упор именно на качество приложения, то это все реализовать можно.
он повторяет попытку и тут-то наконец приходит ответ от первого запроса. сабжевая проблема не решена.
При отмене запроса результат не приходит. Проблема решена.
какая проблема? сабжевая не решена.
В сабже запросы не отменяли когда новые слали, поэтому отрабатывали оба, нет?
ReadyState Value Description
0 Represents an «uninitialized» state in which an XMLHttpRequest object has been created, but not initialized.
1 Represents a «sent» state in which code has called the XMLHttpRequest open() method and the XMLHttpRequest is ready to send a request to the server.
2 Represents a «sent» state in which a request has been sent to the server with the send() method, but a response has not yet been received.
3 Represents a «receiving» state in which the HTTP response headers have been received, but message body has not yet been completely received.
4 Represents a «loaded» state in which the response has been completely received.

Это на всякий случай, если вдруг спросите как определить глючит запрос или данные долго качаются
Спасибо, Кэп.

На самом деле имеет смысл обернуть ajax запрос в еще один setTimeout который ждет какого-либо завершения запроса.
На самом деле не стоит, в библиотеках есть все инструменты для того чтоб следить за запросом.
Зависит от. Если есть, то гуд. Если нет, то вот тогда нужна подобная оберточка.
Если запрос прошел быстро но данные уже качаются, и их много, Ваш setTimeout все испортит, и всегда будет портить, при каждом новом запросе. Он просто все испортит.
Да, хороший момент. Такие еще повсплывают, поэтому делать таймауты надо с умом. А еще лучше, действительно, довериться библиотеке.
Дело в том что Ваше ироничное «Спасибо, Кэп» прозвучало как раз на реальном решении любой проблемы с мониторингом состояния запроса. Вместо того чтоб реально отслеживать состояние запроса, Вы предлагаете тупо отсчитать некое количество времени и разорвать соединение, если запрос не выполнился.

При мониторинге можно менять сообщения, чтоб пользователю было понятно что происходит:
ReadyState == 2 // подождите максимум Х секунд, ждем ответа сервера…
ReadyState == 3 // сервер ответил, получаем данные…
ReadyState == 4 // получите распишитесь

Видя что сообщения меняются пользователю будет понятно что происходит в данный момент, и ерзать он уже не будет.
Как в гугле: Данные все еще обрабатываются…
Особенно сильно это раздражает, когда после клика нажал стоп и смотришь как баран на старую страницу.
Решение проблемы: моментальное информирование блондинки баннером «Спасибо за выбор, Ваш клик обрабатывается»
Ссылка — для перехода по адресу
Кнопка — для выполнения действия

Выполнение действия (оформление заказа) через нажатие на ссылку — это ужасно.
Согласен. Хорошо, что у нас не так :)
Как же не так, раз топик именно про дваклик по ссылке? Надо чтобы кнопки выглядели как кнопки операционной системы и тогда двойных кликов будет меньше.
Но защищаться, конечно, все равно надо — проблема-то давно известная. И disable кпноки на клиенте и отключение отправки запроса если такой же уже отправлен, а ответ не получен в js, ну и на бэкенде как-нибудь.
Как раз таки наоборот. Даблклик присущ больше для кнопок, а вот про ссылки слышу впервые.
Э… с чего бы? Вы меня удивили. Хотя бы кратко можете изложить механизм образования у пользователя рефлекса типа «дабл-клик на кнопке, одинарный на ссылке»?

Во всех ОС кнопки срабатывают по одинарному щелчку. В винде некоторые объекты (которые заведомо не кнопки) срабатывают по двойному. В линуксе почти все — по одинарному.
Соответственно, можно понять образование рефлекса «двойной щелчок по ссылке» — это ведь не кнопка, два раза надо. Но по кнопке-то откуда?
Не могу сослаться на конкретное исследование, но именно такие данные приводит Кристофер Шмитт.
Вообще-то в Win98 появился ActiveDesktop, в котором была возможность (чуть ли не по умолчанию), свести все клики в системе к одинарным, а GNOME/KDE ведут себя из коробки смешанным образом (тоже, разумеется, с возможностью настройки).

Кроме того, как ни старались все игроки — свести в голове пользователей понятия «компьютер» и «интернет» к единому «информационному пространству» пока никому не удалось. Возможно, GoogleOS удастся, хотя верится с трудом. Потому аналогии с ОС — немного надуманы.
Ага, но gmail с этим долго был несогласен
В общем случае да, но на самом деле совсем не всегда так
С удовольсвием ознакомлюсь с вашими примерами
Первое, что приходит в голову. Like по всем законам должен быть кнопкой, но он сделан как ссылка, и это работает очень хорошо

Это какой-то не тот Like
а на сообщение Вы отвечали, кликая по кнопке или ссылке? ;)
кнопке
НЛО прилетело и опубликовало эту надпись здесь
таки кнопке
Ctrl+Enter
Может таки ссылке?
Piccy.info - Free Image Hosting
как раз таки по кнопке. «написать» называется.
а ссылка «ответить» — это именно ссылка к форме…
НЛО прилетело и опубликовало эту надпись здесь
Не поверите =) но адрес у формы есть, отключите жс и проверьте. Другое дело что действие действительно происходит по ссылке =) и потом уже отправляется результат по кнопке. По сути все правы :)
еще нужно что бы после нажатия кнопка сразу пропадала 8-) тогда не будет проблем с даблкликом
Только надо что бы через некий разумный таймаут она появлялась снова, а то коннект заглючит, захочешь действительно еще раз отправить форму а сабмит заблокирован. Я за такое один магазин был убить готов, там форма заказа на А4 страницу и кнопка заблокировалась ничего не отправив и через 5 минут
Хорошо был фаербаг под рукой, разблокировал сам себе, а то бы я второй раз заполнять не стал не смотря на заказ. Просто из принципа
Верно!
или другая формулировка (потому как переход по адресу тоже в какой то степени действие):

Ссылка — для получения контента
Кнопка — для отправки контента

(и тогда даже в gmail все встает на свои места)
Ссылки (и иногда кнопки) для запросов не изменяющих состояние приложения (грубо говоря, не пишущих в БД) — GET запросов прежде всего

Для запросов изменяющих — POST, как правило, хотя ими зачастую эмулируют PUT и DELETE — имхо, только кнопки
Вы прям почти цитируете RFC 2616 :D
Всё уже украдено продумано до нас :) И продумано, похоже, не просто так.

Зачем изменять стандартное поведение контролов, а потом жаловаться, что юзеры ими неправильно пользуются, особенно, если это неправильное использование чревато такими проблемами. Ладно кнопку «удалить» и, тем более, «изменить»/«сохранить» сделать в виде ссылки, но «отправить»… :-/
Тут вопрос не «зачем», а «почему». Потому, что хотя интуитивно и понимается, какие виджеты зачем нужны, это не вербализовано и чётких правил применения нет. И иногда всплывают разные случаи, когда интуиция подводит.

А чтобы вербализовать, нужно читать best practices, хотя бы и в форме RFC. (Standarts Track, как упомянутый RFC 2616 — это именно описание «сложившейся ситуации», т.е. как раз те самые best practices.)
Тем не менее, сам часто наблюдал, как страницы открываются двойным щелчком. Документы, размещенные на сайте — тоже самое.

Думаю, дело в строгой ассоциации — открытие объекта при помощи двойного щелчка. А ссылка это или значок — никто уже не заморачивается.
Блин, вот откуда повторные попытки оплат в нашем биллинге! А я думал все нажимают кнопку «назад» и отправляют форму еще раз :)
Пойду сделаю disabled после первого клика…
корректнее использовать токен — который генерится и проверяется на сервере — для проверки повторного сабмита
Думаю disable хватит, остальным пусть занимается api биллинга…
Disabled не лучшее решение, что будет делать богатенький и недалекий буратина, если после клика и блокировки кнопки/ссылки ничего не будет происходить? Обновить страницу и опять заполнить километровую форму?
После первого клика отключать кнопку, включать после n секунд
А еще надо использовать механизмы защиты от повторного сабмита(duplicate submission) — тогда заказы дублироваться не будут…
У меня все знакомые старше 40 лет по привычке кликают по ссылкам два раза, привычка осталась от Windows с дабл-кликом по ярлыкам.

Простой фразой «в Windows клик два раза, а в Интернете — один раз» они понемногу переучиваются )
к сожалению, родственники старше 50 лет с трудом различают виндоус и интернет :(
у нас уже вовсю занимаются интернет-магазинами))
на самом деле очень часто наблюдал как люди старшего поколения кликают 2 раза по ссылкам и по кнопкам вообще везде. Пытаюсь олбъяснить что в инете всегда на кликать один раз, так ведь иногда встречаются веб-приложения таки требующие двойного щелчка что ещё больше все запутывает.
вот поставите им венду 7 и они вообще запутаются где и сколько надо кликать…
В «венде 7», между прочим, есть защита от дабл кликов.

Если, например, настроить открытие программ по клику, даблклик все равно открывает только один экземпляр программы. А вот тройной клик уже 2 экземпляра запускает )
По этой причине ненавижу пользоваться большинством веб-приложений (к гуглоридеру просто привык). У них интерфейс всегда другой. И здесь другой, и там другой, постоянно другой. Бля.
Мой батя кликает по ссылкам два раза. Старая привычка со времен Windows 3.11 :)
У меня отец тоже два раза кликает, хотя раньше не замечал за ним такого.
Если сделаешь замечания, то в винде по папкам начинает один раз кликать :)
так настроить можно чтоб и в винде сие было правильно…
Проходили это когда-то на Win Me, если не ошибаюсь, делал, чтобы один клип по папкам был, так он кликал дважды :)
Я подозреваю, что он издевается надо мной специально и всё прекрасно понимает :)
Я думаю в России будет еще хуже =)
а есть ведь еще и маленький процент людей, которые «для надежности» делают triple-click
Я уже третьего или четвертого бухгалтера вижу, который программы и документы открывает через ПКМ > «открыть». Видимо тоже «для надежности». И в вебе они делают также.
В винде всегда включаю одинарный клик, жена привыкла и перестала даблкликать в интернетах
Ну да. Жаль в браузере нет настройки «Открывать ссыкли даблкликом» :)
ИМХО не удобно в винде с одинарным кликом, а если надо одну папку или файл выделить?
Хотя проверил, выделяется просто наведением указателя мыши. Непривычно как то без дабл-клика.
Кеп намекает, что в таком случае они выделяются наведением курсора мыши.
пардон, не обновил комменты(
Очень даже удобно, надо просто привыкнуть.
а в линухах он и так по умолчанию работает — по крайней мере, в kde :D
А еще 15% пользователей водят мышкой во все стороны во время загрузки системы мотивируя тем что так быстрее загружается.
ага, если есть анимация — людям кажется что процесс идет быстрее ))
поэтому мышкой и дергают ))
Я думаю этот процент намного выше, и растет пропорционально срочности выполнения какой-либо операции.
15!? Думаю, не меньше 60%, особенно, если медленный интернет!
Сам так делаю, особенно, когда кому-то пытаюсь что-то по-быстрому показать и комп начинает тупить… вот и крутишь по кругу мышкой :)
Чем-то же надо заняться пока грузится, пока грузится то.
Ну, моей винде с меееедленным и старым антивирусом это правда помогало загружаться (уж не знаю, почему...))
Может антивирь включался в режиме бездействия компьютера?
Похоже на то, мой друг даже писал прогу, которая мышь двигала рандомом :). Не помогало, к сожалению. Компьютер сам зависал, если его не трогать, примерно в течение 3-5 минут, причём это работало и во время загрузки компьютера. Почему так — не знаю, но двигать иногда мышкой (настоящей) помогало.
Спасибо, помогло!!!
некоторые пользователи для быстроты любят зажать Enter))
НЛО прилетело и опубликовало эту надпись здесь
Это называется синдром навязчивых движений. Например, люди дергают ногой, когда ожидают чего-то важного и не могут дождаться.
Я тоже дергаю, если мышка дергается, значит на самом деле что-то грузится, а не висит.
Да, это скорее не ускорение, а попытка убедить себя в том, что система всё ещё помнит о пользователе, а не висит.

Также можно Caps Lock включать/выключать и смотреть меняется ли состояние лампочки на клаве=)
А если на кнопку лифта нажимать тык-тык-тык-тык-тык то быстрее приедет
если это гениально придуманный лифт с неудобной кнопкой, которую фиг поймешь, нажал или не нажал, и без всякой индикации, то да, есть шанс что после третьего тыка он всетаки поедет
Микрософт же приучил
Method 2: Move Your Mouse Pointer
If you move your mouse pointer continuously while the data is being returned to Microsoft Excel, the query may not fail. Do not stop moving the mouse until all the data has been returned to Microsoft Excel.
НЛО прилетело и опубликовало эту надпись здесь
У меня знакомый тоже водит мишкой чтобы быстрее грузилось. При этом показывал мне тесты как грузиться без мышки и с мышкой (да, есть даже такие тесты). Сравнивал и говорит реально быстрее грузиться. В итоге сошлись на варианте что при вождении мышей его настолько это увлекает что он начинает и не замечать как проходи время. Т.е. вроде только начал водить а уже и загрузилось.

Как в старом анекдоте «Зашел на 5 минут вконтакт а смотрю уже и час прошел»
Я так проверяю не завис ли комп вообще :)
Напомнило — во времена оны была у нас полусамопальная локальная сеть из десятка компьютеров ДВК-1 (бездисковые станции), концентратора Электроника 60 и сервера СМ-3. Индикатор активности сети в целях отладки и последующего ремонта оборудования был совмещён со светодиодом питания этих ДВКашек. Мигает — идут пакеты, сеть встала — горит непрерывно. От чего она вставала не помню, но, со временем, это дело рассасывалось и начинало работать снова (или не рассасывалось, тогда в ход шла разная тяжёлая артилерия). Кем-то (может и мною, не помню уже) в сообщество польозователей была вброшена идея, что когда сеть стоит колом, можно пощёлкать по светодиодику ногтем (лёгкие щелбаны такие) и это якобы поможет пакетикам рассосаться :). Когда сеть тормозила это был цирк с конями — десять человек сидят и сосредоточенно щёлкают ногтиком по светодиодику с частотой примерно в один герц :). Половина понимала, что это полная хрень, но тоже щёлкали — а фигли, заняться больше нечем, а так — вдруг да поможет :). И ведь вправду — пощёлкал, пощёлкал, оно и заработало. Несомненно щелобаны помогли! :)
Пару дней назад словил баг: Win7, Adobe Media Encoder CS5 не хотел перекодировать видео, если по нему не елозил указатель мышки)
Пришлось минут 5 сидеть, крутить мышку)
Шикарный баг!
Обожаю такие простые и логичные объяснения загадочных проблем =)
«Чудес не бывает» (С) любима фраза нескольких знакомых программистов :)
Я понимаю, что топик не об этом, но вообще-то если двойное нажатие приводит к каким-то проблемам, это все же явный баг и вина программистов, то что они изначально не предусмотрели подобную проблему явно говорит об их некомпетентности.
Это баг и вина разработчиков ТЗ и тестировщиков, прежде всего разработчиков ТЗ на UI и тестировщиков UI. Если мне, как сервер-сайд программисту, дают ТЗ «при получение запроса на такой-то урл с такими-то данными занести данные в БД» то в чём моя вина, что в короткий момент времени пришло два запроса с одинаковыми данными и сервер их обработал? Ещё в ТЗ и напишут «не должно быть не сохранённых в БД запросов, если они дошли-таки до приложения». А если, как клиент-сайд программисту, говорят «при нажатии ссылки должна отправляться форма», то в чём моя вина, что при каждом нажатии она каждый раз отправляется?
Это простительно не программисту, а junior-coderу, в описанной ситуации программист все равно виноват, тот который писал ТЗ для младшего. А если вы считаете, что подобные моменты в ТЗ должен заказчик прописывать, то я это даже комментировать не хочу. На два коммента ниже kai, тоже очень правильно отписался.
Я считаю, что при получении ТЗ написанного заказчиком надо у него уточнить все моменты, которые он по каким-то причинам упустил, а уж если пишешь ТЗ для себя ТЗ от имени заказчика, то явно там обозначить, хотя бы для того, чтобы иметь обоснование на увеличение срока разработки/оплату. По сути виноват менеджер проекта :) — не уследил, не предусмотрел, не отреагировал, не создал условий, чтобы команда сама отреагировала. И даже если он выполняет ещё и обязанности программиста, и вообще все остальные обязанности в команде, включая уборщицы и повара, то все равно виноват как менеджер, а не как программист :D
Такие моменты должны программисты знать, а не менеджер. Я согласен еще этого главного виноватого назвать старшим программистом или архитектором ПО, но никак не менеджером.
В моём понимании в проекте главный менеджер, он рулит (должен рулить) всеми процессами в команде, в том числе и привлечением старших программистов, архитекторов ПО и т. п., и он же отвечает за проект. Если менеджер ничего не знает о «fool protection» и не смог найти архитектора, который знает, то разве виноват архитектор? Другое дело, если менеджер знает, архитектор тоже знает, но забыл упомянуть это в ТЗ кодерам и тестировщикам или удостовериться, что кодеры и тестировщики тоже знают и не забудут — кто забыл тот и виноват. Но тут же явно иная ситуация — никто даже предположить не мог такой сценарий поведения пользователя
«никто даже предположить не мог такой сценарий поведения пользователя» — это и есть некомпетентность, о которой я говорил. Приличный веб-разработчик знал бы, что любой пользовательский ввод надо проверять, а случай с повторной посылкой данных из формы борется за первое место по популярности с скл-иньекциями и спец. символами в теле строк.
Вы говорили о вине, а не о некомпетентности, а некомпетентность сотрудников чья вина?
НЛО прилетело и опубликовало эту надпись здесь
Надо разобраться почему ошибка возникла, чтобы в будущем их не допускать. Например в следующий раз программист будет ждать ТЗ с указанием «предотвратить возможность даблклика на стороне клиента, а если не предотвратили, то корректно её обработать на стороне сервера», а в ТЗ это не включат потому что подумают «ну, после того случая, сам додумается»
НЛО прилетело и опубликовало эту надпись здесь
Но к этому надо стремиться :) А природа если и ошибалась, то только один раз — создала человека :D
Enterprise, Double Click, отсутствие id у процедуры заказа — жесть. Ребят, это же азы.
А зачем писать целый топик? достачно посадить маму или папу за компьютер =) до этого показав, что значек «E» открывается, если нажать два раза…
Вывод у них такой: чтобы что-то открыть надо нажать два раза!
Вот наверное поэтому и надо проводить тестирование с реальными юзерами. Я часто встречал рекомендацию встраивать в формы токены, но только после этого топика понял почему это нужно.
Насчет времени ожидания реакции системы. Я помню вот эти цифры (кажется это по Норману, не уверен):
0.1 сек. время отклика интерфейса — навели курсор на ссылку — появилось подчеркивание, человек понимает что система работает.
1 сек — время отклика на действие — нажали на кнопку, кнопка нажалась, начал крутиться кружочек ожидания
10 сек — время концентрации пользователя на интерфейсе — если после 10 секунд кружочек крутится и ничего не происходит, то человек отвлекается от задания и начинает думать о чем-то другом.
Но дело в том, что двойной клик, это ведь одно действие для человека соотв. эти интервалы не особо имеют значения.
У меня вопрос к AlexKuk, скажите, а в вашем магазине как были оформлены эти линки? Вы не могли бы показать их скриншот? Также интересует, менялся ли курсор при наведении на ссылку на палец (pointer), или оставался стрелочкой?
прочитал, и самому теперь тянет 2 раза кликать(
Я знакомых учу так: если при наведении что-то происходит (обычно курсор меняет форму), то один раз. Не панацея конечно, но охват случаев большой. Хотя на кнопках не происходит подобного, и тоже нужно жать один раз, но люди не путаются, так как есть аналоги в оффлайн.
> Думаю, в России процент будет гораздо ниже, но не благодаря повальной компьютерной граммотности населения

Ну не знаю, у меня мама всегда на все 2 раза нажимает. Плотно проблемой не занимался, но сходу объяснить где нажимать один раз, а где – два, не удалось.
Magento — стоит ли удивляться? у них страница обновляется через минуту-другую, можно и сто раз кликнуть.

Мы в одном проекте во всех формах на клик дисайблили кнопку. Правильно было бы её возвращать через некоторое время.
Хорошо сделано на telepay.wmtransfer.com, скрипт сам периодически стучится до сервера после сабмита
«диссонанс между интерфейсом операционной системы и интерфейсом окна браузера»
А в KDE все делается одним кликом. =)
НЛО прилетело и опубликовало эту надпись здесь
А должно убегать от курсора, приговаривая «Ээ, осади» :D
У меня мама всегда даблклие использует. Когда я спрашивал почему, она ответила, что ей просто так удобней — везде нажимать 2 раза, а не думать где 1, а где 2.
-500 в карму разработчикам, которые не могли найти такой баг без анализа логов на сервере =\
Глаз очень замыленый у таких ребят, им и в голову не приходило
Большинство моих гуманитарных знакомых (около 80%) двойным щелчком жмут все что не кнопка и не пункт меню.

Почему ссылка в обозревателях реагирует на двойной клик мне совершенно непонятно.
Из поста я так и не понял, что же за информация о заказе дублировалась? Если это было добавление в корзину товара, то это можно пофиксать разделением операций «добавления товара» и «изменение кол-ва» и делать как говорилось выше через POST запрос. Ситуация «товара нет в корзине», если клиент нажал на кнопку «Добавить товар», шлется команда «добавления товара», товар добавляется, а повторные запросы просто игноруются. После добавления товара страница уже отрисовывается в режиме («изменение кол-ва»). Соответственно обрабатывается ситуация изменение кол-ва если клиент что то делает с кол-вом. Всегда можно разделять операции и это часто упрощает жизнь. Как то так. Если не попал, то не судите строго, рабочий день длинный могу уже тупить.
Для меня обычный сценарий увеличение количества путем повторной отправки формы, особенно если форма аяксовая и ререндеринга всей страницы нет.
зачем их разделять? чем плохо количество = 0 по умолчанию?
можно пример, я не понял, что Вы имеете ввиду.
логи смотрят в первую очередь
Блин, у меня тоже есть такой баг. Надо срочно что-то делать :)
Я реально видел человека, который ходит по ссылкам двойным кликом. И вроде технически подкованный…
А разве сложно повесить на ondblclick и onclick один и тот же разработчик.
Моя мама иногда тыкает дважды по ссылкам.
У меня мама на рабочем столе щёлкает не 2 а как минимум 4 раза.
По ссылкам через раз, иногда 1 раз, иногда 2. И что бы я ей не говорил, она всё равно продолжает так делать. -_-
кнопки/ссылки, посты/геты… какая к черту разница? запросы имеют свойство дублироваться по самым разнообразным причинам, а делая отключение кнопки вы лишь маскируете проблему не решая её но внося неудобства. а решение простое — одинаковые запросы должны приводить к одинаковым же последствиям. то есть в запросе должно быть например не add-to-cart=phone а change-phone-count-in-cart-to=1
Хочу плагин для браузера, который при двойном клике по любой ссылке выдавал бы диалог с ругательствами. Чтобы маму отучать.
Хорошо что на Хабре такой проблемы нет!
Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.