воскресенье, 18 августа 2013 г.

Одно неловкое движение, и ты...

В общем, накосячил я немного в попытках внести мелкую правку, и теперь самый популярный пост этого блога, на который есть куча ссылок извне — http://shikhalev.blogspot.ru/2011/01/typo-keyboard-input.html — находится по адресу http://shikhalev.blogspot.ru/2011/01/blog-post.html.

Что с этим можно сделать — понятия не имею.

пятница, 16 августа 2013 г.

Сохраняем выделение

Маленький рецептик — записать, чтоб не забыть, да и вдруг кому пригодится. Когда мы используем в HTML атрибут contenteditable, может возникнуть желание (и почти наверняка возникнет) сохранять выделение редактируемого текста при кликах снаружи (например, на какие-нибудь кнопки). Сделать это можно например так:

Это, конечно, крайне примитивный пример, который, скажем, не проверяет, что выделение само по себе находится в редактируемой области, проверяет только то, что клик не в ней.

В принципе, механизм очевиден, пояснения по методу compareDocumentPosition() можно найти в документации Mozilla, или на JavaScript.ru.

В процессе довелось столкнуться с интересным моментом — при абсолютном позиционировании элементов на странице могут быть области ничем не покрытые, в т.ч. и элементом body. Соответственно, обработчик события на них не срабатывает, и выделение сбрасывается. Чтобы этого не происходило, я использовал CSS:

Демо-пример целиком можно взять по адресу: https://gist.github.com/shikhalev/6246433.