Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   выделение текста (https://javascript.ru/forum/events/27498-vydelenie-teksta.html)

cyber 15.04.2012 00:43

выделение текста
 
пытаюсь написать такую вещь чтоб выделеный текст при нажатие на кнопку брался в определенный тег.
я знаю что скрипт древний и используется наверно везде, но хочется написать самому.
вот в чем загвоздка при нажатие на кнопку выделение слетает .
пытался использовать
document.getElementById("text").focus();

но не помогло.
вот первые строчки моего кода:)
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Документ без названия</title>
<script type="text/javascript">
function test(){
	 var sel=document.getSelection();
if(document.getSelection()!=""){
	
	document.getElementById("text").innerHTML=sel;
	}
	
	}
</script>
</head>

<body  >

<textarea cols="50"  rows="20"  id="text" >Недавно Google на весь мир показала свой «проект «Glass», так называемые очки дополненной реальности.

И вот, не прошло и двух недель, как разработчик из Valve Майкл Абраш в блоге компании пишет, что им тоже очень интересна такая технология. Говорит, через 20 лет «зрение Терминатора» будет стандартом для общества, а переход на новую платформу может начаться уже через 3-5 лет.

Заинтересованность Valve в разработке очков-компьютера, который Абраш называет «носимый компьютер» также может подтверждать объявления компании о поиске инженеров по электронике и комплектующим, в которых упоминают, что их целью будет разработка новых систем ввода-вывода и создание новых платформ.
</textarea>
<br>
<br/>
<a onclick="test();" href="" >start</a>
<br>
<div id="vv"></div>
</body>
</html>

Octane 15.04.2012 00:52

http://forum.vingrad.ru/topic-35775.html

cyber 15.04.2012 00:59

щас почитаю

cyber 15.04.2012 01:07

мне кажется или статья "немного" устарела?=)
Дата 27.11.2004, 18:58

Octane 15.04.2012 01:13

Да ничего не поменялось, разве что IE9+ стал поддерживать Selection и Range, наряду со своим TextRange

cyber 15.04.2012 01:15

уже понял=)
потихоньку разбираю код

cyber 15.04.2012 02:01

я так понял чтоб запомнить позицию запоминается положение курсора и скрола?

Octane 15.04.2012 12:57

Минимальный код такой:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>…</title>
</head>
<body>
	<button id="btn-bold">B</button>
	<button id="btn-italic">I</button>
	<div>
		<textarea id="text-editor" rows="5" cols="40">Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.</textarea>
	</div>
<script>
function insertTag(tagOpen, tagClose) {
	var textEditor = document.getElementById("text-editor"),
		selStart, selEnd, text, range;
	if ("selectionStart" in textEditor) {
		selStart = textEditor.selectionStart;
		selEnd = textEditor.selectionEnd;
		text = textEditor.value;
		textEditor.value = text.slice(0, selStart) + tagOpen + text.slice(selStart, selEnd) + tagClose + text.slice(selEnd);
	}
	else if ("selection" in document) { //для IE
		textEditor.focus();
		range = document.selection.createRange();
		range.text = tagOpen + range.text + tagClose;
	}
}

document.getElementById("btn-bold").onclick = function () {
	insertTag("<b>", "</b>");
};

document.getElementById("btn-italic").onclick = function () {
	insertTag("<i>", "</i>");
};
</script>
</body>
</html>

cyber 15.04.2012 23:55

спс.
П.с самое смешное что изначально шел в этом направление как вы показали но потом статья одного кретина одна статья меня запутала и все=(

cyber 16.04.2012 00:11

что значит строка
"selectionStart" in textEditor


Часовой пояс GMT +3, время: 08:54.