MSIE: сохраняйте фокус в текстовом поле при нажатии за его пределами - PullRequest
0 голосов
/ 25 марта 2011

Я пытаюсь сделать возможным вставку текста в текущем расположении каретки в текстовое поле при нажатии чего-либо на странице.

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

Я могу заставить это работать, например, в Chrome с event.preventDefault() в событии mousedown.

Но в Internet Explorer я просто не могу заставить эту работу. Любые предложения приветствуются.

Уточнение : Я пытаюсь предоставить пользователям несколько хороших способов ввода экзотических символов, которые нельзя ввести непосредственно с их клавиатуры.

Я реализовал, например, ctrl + alt + p, который хорошо работает во всех браузерах, кроме Internet Explorer, где я не могу остановить стандартное поведение нажатия ALT (активация строки меню).

Затем я создал «палитру» символов рядом с полем, которую можно щелкнуть мышью во время набора текста. Это хорошо работает во всех браузерах, кроме Internet Explorer, где я не могу предотвратить поведение размытия при щелчке мыши по умолчанию.

Ответы [ 2 ]

1 голос
/ 03 декабря 2011

Возможно, это мертвый разговор, но у меня есть решение.

Для IE специально посмотрите на событие onbeforedeactivate. Вы захотите прикрепить это к элементу, который хотите сохранить фокус. Это немного сложно, потому что, если вы всегда отменяете это событие, вы никогда не потеряете фокус на этом элементе, но если вы будете осторожны с его реализацией, вы сможете достичь того, чего хотите.

Я уже давно занимаюсь этим с хорошими чистыми результатами.

1 голос
/ 25 марта 2011

Не делайте этого

Я предлагаю вам не делать этого, потому что сохранение (или, точнее, возвращение фокуса) каретки в текстовом поле также не позволит пользователям изменять адресную строку браузера, а это то, что вам нужноне хочу ..

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

После некоторого разъяснения

Что вам нужно сделать, это вставитьтекст / символ в позиции каретки.input и textarea сохраняют положение каретки, даже когда они теряют фокус.Так что вы должны сделать что-то похожее на то, что здесь делает stackoverflow.Когда вы выбираете какой-либо текст (когда вы набираете вопрос / ответ), а затем нажимаете значок B сверху, вокруг выделенного текста добавляются две звезды.Вот как вы должны делать свои специальные вставки символов.Когда пользователь щелкает по экзотическому перкулярному символу, этот символ должен быть добавлен / вставлен в позицию каретки ввода.

Существует довольно много вопросов о переполнении стека, связанных с решением именно этой проблемы - добавление текста в позиции каретки:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...