Сообщение от рони
|
Devil198711,
возможно есть проще варианты
<!DOCTYPE html>
<html>
<head>
<title>Untitled</title>
<meta charset="utf-8">
<style type="text/css">
</style>
<script>
window.addEventListener('DOMContentLoaded', function() {
var myTextArea = document.querySelector('#myTextArea'),
but = document.querySelector('#but');
but.addEventListener('click', function() {
if(!window.getSelection().anchorNode) return;
var selection = window.getSelection().getRangeAt(0);
var selectedText = selection.extractContents();
var tagname = document.createElement('b');
tagname.appendChild(selectedText);
if(tagname.textContent.length) {
selection.insertNode(tagname);
var range = document.createRange();
range.setStart(tagname.childNodes[0], tagname.textContent.length);
range.collapse(true);
var sel = window.getSelection();
sel.removeAllRanges();
sel.addRange(range);
}
else myTextArea.focus()
});
});
</script>
</head>
<body>
<div id="myTextArea" style="background: #ccc" contenteditable="true">
текст <br />ещё текст<br />и ещё
</div>
<br />
<input type="button" value="Вставить тег b" id="but">
</body>
</html>
|
Спасибо, но проблемы с вставкой тегов я решил уже, единственное что мне никак не поддается это вернуть выделение в прежнее положение при потере фокуса редактора. То есть когда я нажимаю на кнопку вставки ссылки появляется модальное окно с тремя полями форм (урл, текст ссылки, тайтл), и при установке курсора в любое поле редактор теряет фокус и ответственно забывает выделенный текст, вот я и не могу понять как при нажатии кнопки "вставить ссылку" заменить выделенный текст или вставить там где была каретка