将内容可编辑文本的innerHTML转换为普通字符串
Convert innerHTML of a contenteditable text to normal string
我使用一个内容可编辑元素:
<span id="myinput" contenteditable="true">This is editable.</span>
和
document.getElementById('myinput').innerHTML
从Javascript中读取其内容。
但结果是:
CCD_ 1=>
innerHTML = "blah   "
CCD_ 3=>
innerHTML = "bonjour<br>bonsoir"
(Firefox)和innerHTML = "bonjour<div>bonsoir</div>"
(Chrome)也许还有很多其他的东西被翻译成HTML。。。
如何将innerHTML
转换为普通文本
(即在我的两个示例中:"blah "
和"bonjour'n bonsoir"
)
尝试使用;
// for IE
document.getElementById('myinput').innerText
// for everyone else
document.getElementById('myinput').textContent
在寻找换行符等方面,请考虑;
el = document.getElementById('myinput');
var nodes = el.childNodes;
var text = '';
for(var i = 0; i < nodes.length; i++) {
switch(nodes[i].nodeName) {
case '#text' : text = text + nodes[i].nodeValue; break;
case 'BR' : text = text + ''n'; break;
}
}
console.log(text);
由于这种行为在不同的浏览器中不一致,您必须自己实现:
var convert = (function() {
var convertElement = function(element) {
switch(element.tagName) {
case "BR":
return "'n";
case "P": // fall through to DIV
case "DIV":
return (element.previousSibling ? "'n" : "")
+ [].map.call(element.childNodes, convertElement).join("");
default:
return element.textContent;
}
};
return function(element) {
return [].map.call(element.childNodes, convertElement).join("");
};
})();
实际操作:http://jsfiddle.net/koyd8h59/1/
当然,如果您想使用<h1>
和其他块级标记,您需要添加自己的代码。
这是我的答案——它并不完美,有时换行符会被丢弃,但我发现关于这方面的信息太少了,也许它会对某人有所帮助。
const parseNode = node => {
let content = ""
for (const child of node.childNodes) {
if (child.tagName === "BR") {
content += "'n"
}
if (child.tagName === "DIV" && !child.querySelector("br")) {
content += "'n"
}
if (child instanceof Text) {
content += child.textContent
} else {
content += parseNode(child)
}
}
return content
}
相关文章:
- 如何使用JQuery在Javascript中转换字符串中的HTML元素
- 将JSON插入MongoDB中,自动转换字符串中的日期
- 以点表示法转换字符串以获取对象引用
- 在 JavaScript 中转换字符串 11/28/2014 11:00 AM 到现在
- 为什么在主干的字符串数组中转换字符串数组
- 如何简单地转换字符串
- AngularJS如何转换字符串“;yyyyMMdd”;迄今为止
- 如何防止htmlspecialchar(PHP)转换字符串中的整数
- 刷新Aurelia中的i18n转换字符串插值
- 发布时禁用转换字符串
- 转换字符串货币
- 在javascript ajax调用中转换字符串到数组
- 转换字符串包含时间到24小时的时间,我可以做数学与- jQuery
- IE javascript引擎在转换字符串到日期时呈现NaN
- 如何转换字符串“a,b,c,d……”成a.b (c, d . .);来执行
- 如何在javascript中转换字符串到日期格式
- 如何在嵌套数组中转换字符串数组
- 在javascript中转换字符串日期
- 转换字符串在印度格式的javascript
- Javascript转换字符串到数组的对象