欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

將內(nèi)容可編輯文本的innerHTML轉(zhuǎn)換為普通字符串

劉柏宏1年前8瀏覽0評論

我使用了一個內(nèi)容可編輯的元素:

<span id="myinput" contenteditable="true">This is editable.</span>

document.getElementById('myinput').innerHTML

從Javascript中讀取其內(nèi)容。

但結(jié)果是:

"布拉& quot= & gtinnerHTML = & quot胡說八道。nbsp & quot

"您好\n您好& quot= & gtinnerHTML = & quot你好& ltbr & gt晚安& quot(Firefox)和innerHTML = & quot你好& ltdiv & gtbonsoir & lt/div & gt;"(鉻合金)

也許有很多其他的東西被翻譯成HTML...

如何將innerHTML轉(zhuǎn)換成普通文本?

(即在我的兩個例子中:& quot布拉& quot和& quot您好\n您好& quot)

嘗試使用;

// 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);

由于這種行為在不同的瀏覽器中是不一致的,您必須自己實現(xiàn)它:

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/

當(dāng)然,如果您想使用& lth1 & gt和其他塊級標(biāo)簽。

這是我的答案——它并不完美,有時會出現(xiàn)斷行,但我發(fā)現(xiàn)這方面的信息很少,也許它會對某些人有所幫助。

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
  }