Интерфейсы

индекс
44,19

Индикация языка ввода

После прочтения поста про пароль и раскладку клавиатуры решил набросать скрипт, который бы сигнализировал, на каком языке вводится пароль.

Расскладка определяется по вводимым символам, поэтому при вводе цифр и некоторых символов определить язык не удаётся. Так же при вводе цифр и символов не удаётся определить включён ли Caps Lock. К сожалению другого способа не нашёл.

Для удобства оформил как плагин к jQuery.

Рабочий пример
Скачать
+40
31 января 2009, 23:08
61

комментарии (53)

–3
habralan #
В посте, на котором вы ссылаетесь, я не получил ответа. Может, вы проясните ситуацию? Почему вы считаете, что в мире есть только русская и английская раскладка?
+4
Devoll #
Возможно, он сделал только две раскладки потому-что среднестатистический пользователь интернета имеет две раскладки — английскую и родную. А учитывая тот факт, что мы с Вами живем в стране рускоговорящих, то можно сделать вывод, что раскладки у нас с Вами будут EN/RU. Те, кто будут прикручивать к себе этот скрипт, смогут поменять русский на другую раскладку. Тут есть неоспоримое преимущество — размер выходного скрипта. Впихнув все раскладки мира, мы увеличим скрипт. Надеюсь, я смог внести ясность в Ваш вопрос?
+1
habralan #
Идея автора мне понятна. Я пытаюсь привести аргументы, что идея неправильная. Почему не разделить раскладки на «English» & «Non-English»? Основная задача-то ведь — показать, что ввод происходит на языке, отличном от английского (и, следовательно, возможны проблемы при вводе пароля), а не то, что раскладка русская…
+3
y0ga #
вы правы, можно сделать и так. скрипт всего лишь реализует идею, а что именно выводить — язык ввода, флаг страны или что либо иное — зависит от ситуации.
–2
PART #
Поменяйте надписи на CYR и LAT — и будет всем счастье.
0
xain #
не будет, CYR и LAT — это менее распространенные обозначения. «en»- воспринимается на подсознательном уровне и поэтому более подходит для такой индикации ввода.
+2
PART #
Чтобы воспринималось на подсознательном уровне, надо наплевать на придирки насчёт названия языков и сделать так:
0
PART #
Если следовать Вашей логике, то и English — неправильно, т. к. немецкая раскладка, например, тоже будет определяться как English.
–1
habralan #
"… тоже будет определяться как English" вплоть до первого умляута или иного специфического символа — то же поведение, что и, например, с запятыми.

Еще раз, в исходной задаче (топик, на который ссылается автор) было не определить раскладку, а показать пользователю, что возможны проблемы с паролем. Предложенное автором решение спасет только русскоязычных пользователей.

В целом, судя по реакции, аудитории это не важно. Мне в целом тоже :)
+5
dfuse #
Немного неясный алгоритм… Я так понимаю, что проверка языка идет по последней введенной букве, так?

Думается, что лучше смотреть по первым символам введенным… Ну или проверять наличие и тех и других и выводить хелпер «ru-en», например. А то я сам запутался, что я навводил после пары смен раскладок…
0
y0ga #
«ru-en» выводить точно бессмысленно — делу он не поможет никак, и так понятно. а если выводить только начальную раскладку, то после пары смен так же можно запутаться.
0
ParkOUR #
А я вот думаю… А если пароль состоит из русских английских букв например? ))) Тогда этот способ не совсем подойдёт. Может их цветом выделять? Хотя это уже в плюс для посторонних глаз будет.
0
ParkOUR #
Из «русских И английских» *
0
darkk #
Вообще говоря, для избежания проблем с кодировками и прочим счастьем рекомендуется пароли оставлять семибитными.
Некоторые сервисы даже явно запрещают восьмибитные пароли.
+1
bdsoft #
Можете рассказать что такое семибитными пароли?
0
darkk #
С алфавитом \x20-\x7F (т.е. пробел, латиница, цифры и «стандартная» пунктуация) т.е. все символы с нулевым восьмым битом.
0
darkk #
Не вижу хэдера с лицензией и ссылкой на «домашнюю страницу» :-)
А то хотел утащить на rss-proxy.darkk.net.ru — только что в логах обнаружил, что юзер смог зайти только с пятого раза, т.к. до этого вводил пароль в кириллице.
0
y0ga #
в лицензиях не силён, но думаю что то вроде «испольуйте как хотите» :)
–1
iAndrey #
Спасибо за реализацию моего варианта! А то мне лень было)
0
iAndrey #
А что я не так сказал? Я рад что скрин в том комментарии подтолкнул кого-то реализовать индикатор.
Единственное, может ссылку не совсем корректно поставил. но это лучше, чем всякие «тыц», и не думаю что это повод минусовать карму.
+1
zerobrain #
Стоит только упомянуть, что английская и, скажем, немецкая раскладка очень близки друг к другу (почти вплоть до кнопок) и просто так вводимый язык уже не определить, так что яваскриптовый пример с небольшой натяжкой годится только для русскоязычных сайтов
–1
homm #
Зачем заметочку в 3 строчечки убирать под кат? Вам так греет душу это вящее чувство интриги?
+1
homm #
Никто из минусяторов не ответил на вопрос: Зачем заметочку в 3 строчечки убирать под кат?
0
iAndrey #
Попробую ответить, хоть и не минусовал.
Кому эта заметка интересна все-равно откроет её чтобы комментарии прочитать, а от остальных убрали несколько строчек не нужной для них информации.

зы: на хабре уже привыкли видеть комментарии типа «под кат», но чтобы кат убрать требовали… что-то новое))
0
homm #
> Кому эта заметка интересна все-равно откроет её чтобы комментарии прочитать
Конечно откроем, ему придется, ссылки то под катом.

> а от остальных убрали несколько строчек не нужной для них информации.
Две строчки из пяти ТАК экономит место…
0
iAndrey #
я лишь попытался найти разумное обьяснение. мне бы ни сколько не помешали лишние две строчки, да и на ссылку нажать труда не составило.
0
steff #
А если пароль полностью из спецсимволов состоит (Shift + 1...0). В разных раскладках символы будут отличаться, а скрипт это не учитывает, я так понял?
0
y0ga #
почему же, если спецсимволы возможно ввести только в одной расскладке — она определится. например, []{}<> и др.
0
madhare #
а вот у меня «рабочий пример» оказался нерабочим :) firefox 3.0.5 и в safari (mac)
суть проблемы в следущем, что в поле ввода есть возможность ввести текс(читай пароль) только на анлийском языке. Если я уже стою в текстарии то расскладка не меняется, а если я снала поменяю расскалдку, а потом выделю поле ввода, то она автоматически поменяется на английскую… Вот такие вот пироги, наверно виновата в этом mac os…
0
y0ga #
извините, нет возможности проверить на маке. :(
но вашу проблему так и не понял.
0
noita_kronk #
Забавно. Вполне пригодная штука.
Только есть нелогичность в том, что большими буквами обозначается только капслок. Правильнее показывать не капслок, а большие буквы большими буквами (тогда индикация должна происходить и при нажатом шифте). А если нужно указать на капслок, то надо писать «Caps Lock».
0
y0ga #
мне кажется отображать каждое нажатие на шифт глупо, т.к. вы это делаете осознано и напоминать вам об этом смысла нет. а вот то, что у вас нажат капслок, можете не заметить.
0
noita_kronk #
Вы хоть поняли, почему и о чём я написал комментарий?
–1
drhyperkalich #
Есть такая утилита для Windows
Думаю она решит все проблеммы.
www.amlpages.com/Rus/download.htm#amlmaple
Ну конечно ести идти от пользователя.
+2
pooh #
Смысл придумывать велосипед? Посмотрите, как проверка языка пароля сделана у Яндекса.
0
ProRunner #
Интересно, зашёл на mail.yandex.ru — неправильная раскладка никак не выделяется. Включается только после попытки залогиниться и редиректа на https://passport.yandex.ru/passport?mode=auth.
0
AlexeyTokar #
А как она сделана у яндекса? После отправки формы и перезагрузки страницы выводится «проверте раслкдку и не нажат ли capslock»? Так это вроде как не вариант…
0
AlexeyTokar #
да и к тому же у яндекса очень сомнительная политика: " Пароль должен содержать от 6 до 20 символов из списка: A-z, 0-9,! @ # $ % ^ & * ( ) _ — + и не может совпадать с логином."
0
pooh #
А в чем сомнительность? :)
0
pooh #
Посмотрите, например, в Я.Деньгах на странице, где нужно вводить платежный пароль — вся функция в 17 строк, и уж тем более не нужны 50 Кб jquery
0
ProRunner #
Мне кажется, RU стоит выделять красным.
0
inoks #
можно еще писать en или EN в зависимости от caps
0
bdsoft #
так и есть
0
inoks #
у меня не работает
0
bdsoft #
только после ввода большой или маленькой буквы
0
inoks #
хм… а оно капс проверяет, или введенный символ?
У меня caps отключен, при вводе латинских букв с shift отображается en.
0
y0ga #
проверяет только капс. посчитал, что вы сами знаете, что нажали шифт, и говорить вам об этом нет необходимости.
0
inoks #
ну наверное это правильно, да.
0
Old_Chroft #
Не знаю, почему эту вроде бы безобидную тему для облегчения жизни юзера превратили в холивар. Не нравиться? Не пользуйтесь. Лично мне нравится.
Все доводы «У меня пароль из русских и английских букв» и про «китайскую кодировку» здесь необоснованы. Если у вас «многоязычный» пароль — значит Вы — «продвинутый» юзер. И Вам не грозит 150 раз подряд ошибиться раскладкой клавиатуры. Далее. Здесь русско-говорящая аудитория — так что для локализации своих сайтов этого вполне хватит. Китайцы на своем китайском хабре придумают что нибудь свое :)
Кстати, еще в прошлом топике хотел предложить одну небольшую идею, которая есть в некоторых софтинках — почему бы просто юзеру не дать возможность ткнуть в чекбокс «показать пароль», и изменить тип поля с password на text? За нашей спиной ведь не всегда есть кто-то чужой :)
0
jean #
идея отличная, но реализация со стороны сайта, странная. можно сделать на уровне патча к gtk или расширения к ff, ведь поле ввода всегда знает, что в него вводят пароль.
0
ionicman #
идея вполне ничего, но мне кажется вполне логичным было бы показывать всего две вещи — что нажат капс, и что язык отличен от английского.
Согласитесь, что 99.9% паролей — это всежтаки латиница, а если вы наберете 123 или ;. на русской, китайской или же корейской раскладке — ничего от этого не изменится.

И выводить это как тултип со сноской ( типо как в вики на внешние ссылки — т.е. типа облачка такого с указателем ) а в ней писать нажат CASP LOCK, введены нелатинские символы. ну либо пиктограммками справа.
0
hlomzik #
Предлагаю открыть для себя регулярки.
/[^\x20-\x7f]/.test(password)? alarm(): pass();
0
y0ga #
спасибо, как то не подумал :)

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