|
|
|
| Я пытаюсь сделать так, чтобы при наведении курсора на текст он заменялся на другой текст и становился выбранным. Но у меня не получается даже и близко.
Вот, например, так пишу:
<span onmouseover="this.text='New text';">Initial text</span>
|
Замена текста происходит, но его потом даже не получается выбрать мышкой.
А хотелось бы, в идеале, чтобы хоть в части браузеров происходило автоматическое выделение нового текста. | |
|
|
|
|
|
|
|
для: Eugene77
(23.04.2009 в 17:19)
| |
<html>
<head>
<script>
function f ()
{
var r = document.body.createTextRange ();
r.moveToPoint (window.event.x, window.event.y);
r.expand ('sentence'); r.select ();
}
</script>
</head>
<body>
<span onmouseover="this.innerText = 'New text.'; f ()">Initial text</span>
</body>
</html>
| only MSIE | |
|
|
|
|
|
|
|
для: PAT
(23.04.2009 в 19:55)
| | да уж!
Впечатляет!
Интересные возможности у IE есть!
Но мне бы хотелось,чтобы и в других редакторах, если даже текст не выделялся бы сам собой,то хотя бы его можно было бы выделить мышкой, а то что-то созданный JS текст у меня вообще никак не выделяется. Может я не так создаю его? Как-то иначе создавать?
Я читал, что document.write - самый совместимый способ добавить что-то в документ, но как добавить именно в нужном месте при помощи document.write ? | |
|
|
|
|
|
|
|
для: Eugene77
(23.04.2009 в 20:43)
| |
<span onmouseover="this.innerHTML = 'New text.'">Initial text</span>
| Без выделения, но кроссбраузерно. | |
|
|
|
|
|
|
|
для: PAT
(24.04.2009 в 08:16)
| | Не работает.
То есть текст, конечно, меняется, но выделить новый текст мышкой нельзя.
Я в нескольких версиях Оперы пробовал | |
|
|
|
|
|
|
|
для: Eugene77
(24.04.2009 в 08:30)
| | Опера - самый кривой браузер из всех существующих.
В каких-то её версиях - работает, в других - не работает.
Здесь именно это (innerHTML в Опере) - уже обсуждалось
UPDATE: хотя сейчас посмотрел - и в IE выделить новый текст МОЖНО, а вот кликнуть потом по "Копировать" в контекстном меню - НЕЛЬЗЯ. Но для IE это "лечится":
<span onmouseover="if (this.innerHTML != 'New text') this.innerHTML = 'New text'">Initial text</span>
| Проверьте в вашей Опере. В моей - версия 9.52 - работает.
UPDATE2: увидел сейчас ваш вопрос о document.write.
Отвечаю - метод этот можно использовать только при инициализации (формировании) документа. Применение document.write на уже сформированной странице приводит к ПОЛНОМУ переписыванию документа (грубо говоря - исчезнет ВСЁ, что было прописано между <html> и </html> и появится только то, что внутри скобок этого метода прописано).
Поэтому использовать его в качестве средства динамического изменения какой-то части существующей страницы просто НЕЛЬЗЯ. | |
|
|
|
|
|
|
|
для: PAT
(24.04.2009 в 08:41)
| | СУПЕР!
В разных версиях Оперы работает!
Последняя, видимо, деталь осталась:
Новый текст не очень-то маленький и повторять его 2 раза внутри тега не хочется.
Может быть можно как-то переменную ввести?
Как это аккуратно сделать?
Чтобы не вводить для каждого такого тега новую переменную. Чтобы эта переменная только локально работала? | |
|
|
|
|
|
|
|
для: Eugene77
(24.04.2009 в 16:01)
| |
onmouseover="var a = 'New text'; if (this.innerHTML != a) this.innerHTML = a"
|
| |
|
|
|