我不認爲你可以。即使在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 ])。