Javascript-форум (https://javascript.ru/forum/)
-   Оффтопик (https://javascript.ru/forum/offtopic/)
-   -   В contenteditable появляется br (https://javascript.ru/forum/offtopic/41446-v-contenteditable-poyavlyaetsya-br.html)

FreeStyler 14.09.2013 15:20

В contenteditable появляется br
 
Если ввести текст, а потом выделить его и удалить в диве появляется br. Баг или фича? Мешает т.к. я просто вставляю смайлы через .innerHTML+= и смайл появляется после перевода строки. Нашёл как вставлять через execCommand, но всё равно интересно почему появляется этот бр -_-
Пробовал на лисе и сафари

http://jsfiddle.net/nvTky/

<html>
<body>
<div id="mess" style="height:40px;border:1px solid red" contenteditable="true"></div>
<input value="alert" onclick="alert(document.getElementById('mess').innerHTML);" type="button">
</body>
</html>

DjDiablo 14.09.2013 21:23

Если я правильно понял то BR появляется если из строки удаляется все содержимое но сама строка остается, в принципе это логично.

danik.js 15.09.2013 04:37

Поигрался в хроме. Да, действительно, появляется BR, но не всегда :)
Вот это уж точно не логично). Вообще, с contenteditable все довольно плохо, не советую полагаться на логику браузера.

FreeStyler 15.09.2013 07:52

Совсем не логично, т.к. изначально никакого бр нет и ентер не нажимался. Да, печально что такой хороший wsiwyg инструмент не приводят в порядок и приходится всё через какие-то exec костыли делать.

bes 15.09.2013 10:50

по-моему всё логично, каждая строка в div contenteditable="true" - это div, для того, чтобы пустой div не схлопывался, добавляется br (так сделали)
приведи пример, где тебе мешает этот br

<style>
div {
	border: solid 1px;
	margin: 1em;
}
</style>
<div></div>
<div style="height: 1em;"></div>
<div><br/></div>
<div contenteditable="true" oninput="console.log(this.tagName + '1: ' + this.innerHTML)"></div>
<div contenteditable="true" oninput="console.log(this.tagName + '2: ' + this.innerHTML);"></div>
<button onclick="var p = this.previousElementSibling; 
	p.innerHTML += '<img src=\'http://javascript.ru/forum/image.php?u=19820&dateline=1334914235\'/>';
	console.log(p.innerHTML)">click</button>


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