Javascript: отображение всплывающей подсказки, когда мышь наводит определенное слово в текстовой области - PullRequest
0 голосов
/ 27 мая 2010

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

Возможно ли это вообще? Я бы предпочел увидеть решение, которое не использует сторонние библиотеки javascript.

Спасибо!

Ответы [ 3 ]

2 голосов
/ 27 мая 2010

Если вы хотите использовать поле «richtext» (например, contentEditable и designMode), вы можете заключить слово в <span> и присоединить к нему события mouseover и mouseout. Большим недостатком этого подхода является то, что функции «richtext», которые вам могут не понадобиться, могут вызываться с помощью сочетаний клавиш в некоторых браузерах, даже если вы не предоставляете для них интерфейс, и вам придется фильтровать эти стили либо во время редактирования или после сохранения в <textarea>.

В качестве альтернативы вы можете иметь скрытый (но не display: none, так как это помешает точному измерению) <div>* и обновить его содержимое при изменении <textarea>, оберните слово с помощью <span>, как в опцию выше, и отображать всплывающую подсказку, если смещение позиции курсора относительно <textarea> находится в пределах, которые были бы над <span> относительно скрытого <div>. Чтобы определить положение, вы, вероятно, захотите запустить наблюдатель события mousemove, если в <textarea> есть событие mouseover, и остановить событие mousemove, если в <textarea> есть событие mouseout. .

* Примечание. Чтобы обеспечить правильное позиционирование, этот <div> должен иметь точно такие же стили шрифта, текста, линий и размеров, что и текстовая область, а при зеркалировании содержимого вам необходимо экранировать специальные символы HTML (&, < и >), а также конвертировать новые строки в теги <br>.

0 голосов
/ 27 мая 2010

Нет прямого способа сделать это для определенного слова в, вы можете иметь его для всей текстовой области

0 голосов
/ 27 мая 2010

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

...