2011-07-26 99 views
2

我需要與textContent等效的IE。對於IE的textContent(空白保留innerText)

在跳下褲子的位置之前 - 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

我不認爲你可以。即使在TextNode#nodeValue屬性中,IE也「正常化」這些空間。前一陣子我寫了這個:

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 ])。