Удвоение разрывов после удаления <br>и оставление только текста - PullRequest
1 голос
/ 16 января 2011

После того, как я выполню следующее:

var noTags = document.createElement("DIV");
noTags.innerHTML = html;
noTags.textContent // <- I put this into any textarea

и этот текст:

text test <br><br> this text

Превращается в этот текст:

text test 


this text

Как получить дополнительный перерыв,И они просто продолжают приходить каждый раз, когда я делаю вышеуказанный javascript.Пожалуйста, помогите: - (

Ответы [ 2 ]

3 голосов
/ 16 января 2011

Когда вы присваиваете html свойству innerHTML, браузер интерпретирует эту строку на основе DOCTYPE, установленного для страницы. Вы будете зависеть от парсера, который браузер реализовал для этого DOCTYPE, и от браузера, реализовавшего указанный стандарт; читайте по-другому: «вы гарантированно получите разные результаты в разных браузерах».

При этом каждый браузер будет интерпретировать следующий HTML немного по-своему.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
"http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<title>Testing textcontent</title>
<meta http-equiv="Content-type" content="text/html;charset=UTF-8" >
</head>
<body>

<form action="">
<textarea id="onlyText" rows="5" cols="40"></textarea>
<script type="text/javascript">
/*<![CDATA[*//*---->*/
var html = "text text <br><br> text";
var noTags = document.createElement("DIV");
noTags.innerHTML = html;

// Retrieve text from html
var textContent = "";
var oe = document.getElementById("onlyText");

if (oe.innerText == undefined) {
    textContent = noTags.textContent;
} else {
    textContent = noTags.innerText;
}

alert("DEBUG: textContent = " + textContent);


oe.innerHTML = textContent;

/*--*//*]]>*/
</script>
</form>

</body>
</html>

Добро пожаловать в сети. Ваш код будет отличаться.

0 голосов
/ 16 января 2011

У вас там два перерыва, почему бы вам не ожидать, что будет две строки?

Перерывы обычно также выполняются как один закрытый тег. <br/> вместо <br>.

...