Лучший способ реализовать ввод Unicode символов

Понедельник, 22 Октябрь, 2007

Эндрю М (Andrew M) спрашивает:

Я надеюсь, вы подскажете, как правильно реализовать ввод Unicode символов. Ведь, большинство приложений делает это некорректно.

Я не уверен, что правильно понял вопрос, но ответ на него очень прост: Не делай этого!

Ввод текста — сложная задача. Она должна реализовываться профессионалами. Это означает, что вы должны использовать такие контролы, как стандартный «Edit» или «Rich Edit». Правильное преобразование строк в символы предполагает не только изменение состояния, но и управление различными методами ввода в редакторе (некоторые из которых являются достаточно сложными). Например, IME Pad позволяет пользователю нарисовать мышкой (или, если вам повезло, — стилом) Китайский символ, а затем получить результат, оформленный в виде символа который вы попытались нарисовать. Затем генерирует соответствующий символ Unicode.

Другие IMEs генерируют временный переход от фонетического написания символа в символ Unicode, а затем позволяют пересмотреть свое предположение, основываясь на дальнейшем вводе текста. Оно вам надо? Оставьте это профессионалам.

[…]

Понедельник, 22 октября 2007 г. 7:00
The best way to process Unicode input is to make somebody else do it

Read only reason

Среда, 19 Сентябрь, 2007

В разговоре с одним из тимлидов, всплыла некая проблема с HTML элементом INPUT type=FILE, а именно - имя файла выбирается, набирается вручную, но ни в какую не поддается изменению из скрипта. Вернемся немного назад и состряпаем тестовый пример:

<html xmlns=”http://www.w3.org/1999/xhtml“>
<body>

<input id=“inpFile” type=“file” />

<script type=”text/javascript”>
    var o = document.getElementById(‘inpFile’);
    o.value = ‘blablabla.txt’;
</script>

</body>
</html>

o.value - остается без изменений, т.к. этот атрибут “только для чтения”. Собственно, это давно известно и нас в курилке заинтересовал вопрос: “почему?” В ходе нанодебатов приходим к выводу, что только по причине безопасности. Докурили, погуглили:

Internet Explorer и Netscape не используют атрибут VALUE как хранилище по умолчанию для содержимого поля ввода. Любые значения по умолчанию, установленные посредством HTML, не доступны из скрипта и DOM. В момент, когда пользователь введет текст в поле ввода, значение транслируется через DOM и будет доступно, как обычно, через тот же DOM. Причина такого поведения в повышении безопасности/надежности пользователя от злонамеренных авторов скриптов. […]