用于IE的Javascript textContent(保留innerText的空白)

时间:2011-07-26 06:31:30

标签: javascript internet-explorer

我需要IE等效的textContent。

在你跳下裤子的位置之前 - innerText与textContent不同。 innerText在DOM渲染器解析时解析空白。 textContent在写入时解析空格。我需要后者,但是I.E.不支持textContent。

例如:

DOM Obj:   <p>This  is  an  example.</p>
innerText:   "This is an example."
textContent: "This  is  an  example."

1 个答案:

答案 0 :(得分:1)

我认为你不能。 IE甚至在TextNode#nodeValue属性内“标准化”空格。前一阵子我写了这个:

function textValue(element) { 
    var collector = []; 
    textValueCollector(element, collector); 
    return collector.join(""); 
} 
function textValueCollector(element, collector) { 
    var node; 
    for (node = element.firstChild; node; node = node.nextSibling) 
    { 
        switch (node.nodeType) { 
            case 3: // text 
            case 4: // cdata 
                collector.push(node.nodeValue); 
                break; 
            case 8: // comment 
                break; 
            case 1: // element 
                if (node.tagName == 'SCRIPT') { 
                    break; 
                } 
                // FALL THROUGH TO DEFAULT 
            default: 
                // Descend 
                textValueCollector(node, collector); 
                break; 
        } 
    } 
}

所以我认为这可能是你所需要的,但遗憾的是,没有。正如您在this live example中看到的那样,在IE上,即使我们直接走过文本节点,也会遗漏额外的空格,所以它只显示45的长度,实际上它是61(在其他浏览器上[Chrome] ,Firefox,Opera])。