Considere esto:Diferencia en jQuery con el espacio de nombres XML y xhr.responseXML entre Opera y Firefox
<!DOCTYPE HTML>
<html><head><title>XML-problem</title>
<script src="jquery-1.3.2.min.js" type="text/javascript"></script>
<script type="text/javascript">
$(function() {
$('<p/>').load("text.xml", function(responseText, textStatus, xhr) {
var xml = $(xhr.responseXML);
var x_txt = xml.find('atom\\:x').text();
$(this).text(x_txt).appendTo('#container');
});
});
</script>
</head><body><div id="container" /></body></html>
Este script debe cargar text.xml cuando el documento se ha cargado. text.xml se ve así:
<xml xmlns:atom="http://www.w3.org/2005/Atom">
<atom:x>Text</atom:x>
</xml>
Cuando este archivo se ha cargado, el contenido del texto de la atom:x
-node se adjuntan al documento. Puedo ver "Texto" en la ventana de mi navegador.
Esto funciona como se esperaba en Firefox. Sin embargo, no funciona en Opera a menos que cambie la consulta de 'atom\\:x'
a solo 'x'
. En este caso, funciona en Opera, pero no en Firefox.
He descubierto una solución, es decir, cambiar la consulta a 'atom\\:x, x'
, pero me gustaría llegar al final de esto.
Ahora para el toque divertido: Puedo inline el código XML directamente en lugar de obtenerlo de XHR cambiando
var xml = $(xhr.responseXML);
en
var xml = $('<xml xmlns:atom="http://www.w3.org/2005/Atom"><atom:x>Text</atom:x></xml>');
En este caso, una consulta de 'atom\\:x'
se dar el resultado deseado en ambos navegadores y solo 'x'
no dará resultado en ambos buscadores.
El hecho de que esto funcione de manera diferente en Opera me lleva a la conclusión de que el comportamiento anterior es un error en Opera. ¿Es esta una conclusión razonable? ¿Dónde puedo señalar el estándar que describe cómo se supone que funciona?
En conclusión:
- ¿Cuáles son las soluciones temporales alternativas para este problema? ¿Alguno mejor que el que he encontrado?
- ¿Este es un error en Opera? Si es así, ¿qué estándar dice eso?
espera que usted pueda ayudar :)
Parece un error conocido. http://thompson-web.blogspot.com/2009/03/jquery-xml-and-namespaces.html http://dev.jquery.com/ticket/155 –
@Stefan: Por lo tanto, debe jQuery dame resultados cuando solo consultes 'x', sin importar el navegador? –
¿Por qué está usando 'load'? La carga debe ser para html, no xml. ¿Funciona con 'ajax' o' get'? – Kobi