2010-05-07 17 views
0

Pourquoi le JavaScript suivant, lorsqu'il est exécuté dans Firefox 3.6.3, supprime tous les éléments FRAMESET dans un document, mais le script similaire qui utilise à la place une expression XPath pour sélectionner les éléments FRAMESET ne le fait pas? Est-ce que document.evaluate() ne peut simplement pas correspondre aux éléments FRAMESET? Y a-t-il une erreur dans l'expression XPath? Y a-t-il une autre erreur?Itérer sur des jeux de cadres avec l'expression XPath en JavaScript?

Sélectionner l'ensemble FRAMESET éléments en utilisant la méthode document.getElementsByTagName() (réussit):

var framesets = document.getElementsByTagName('frameset'); 
for (var i = 0; i < framesets.length; i++) { 
    framesets[i].parentNode.removeChild(framesets[i]); 
} 

Sélectionner l'ensemble FRAMESET éléments en utilisant une expression XPath (échoue):

var framesets = document.evaluate("//frameset", document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null); 
for (var i = 0; i < framesets.length; i++) { 
    framesets[i].parentNode.removeChild(framesets[i]); 
} 

Répondre

1

Il semble que la XPathResult est itérateur-ish . Il n'a pas de propriété de longueur.

https://developer.mozilla.org/en-US/docs/Web/API/Document/evaluate

framesets.length seront non définies. En bref, Here Be Dragons.

+0

Oui, vous avez raison. Étais sur le point de donner une réponse similaire, mais vous me battre à elle! –

+0

Ce serait bien si vous copiez la réponse ici, 'parce que cette page n'existe plus. – Doug