行,我有一點點功能遍歷樹是這樣的:與DOM節點遇到問題和的instanceof
function walkTree(node, func, args) {
func(node, args);
node = node.firstChild;
while (node) {
walkTree(node, func, args);
node = node.nextSibling;
}
}
而另一種功能,將拿起只有文本節點像這樣:
function selectTextNodes(node, nodes) {
if (node instanceof Text) {
nodes.push(node);
}
}
最後,同時使用:
texts = [];
walkTree(body, selectTextNodes, texts);
但是,它根本沒有填滿表!
如果我修改測試,以使用Node.nodeType
這是可行的:
function selectTextNodes(node, nodes) {
if (node.nodeType == Node.TEXT_NODE) {
nodes.push(node);
}
}
在另一方面,在控制檯它是雙向的:
t = window.document.createTextNode("test");
r = (t.nodeType == Node.TEXT_NODE) && (t instanceof Text);
即R是真的。
請注意,所有函數都嵌套在另一個接收body
變量的函數中。在我的情況下,這是iframe
的contentDocument.body
。沒有應用x域限制。
任何想法是怎麼回事?
絕妙的回答!非常感謝! –
嗯,這是非標準的,但已經[生活標準](https://developer.mozilla.org/en-US/docs/Web/API/Text)。 –