XHR et responseXML (avec MathML)

Le
unbewusst.sein
à la page <http://thoraval.yvon.free.fr/Fixed_layout/import_nodes.xhtml>
(testé uniquement sous MacOS X avec FF 2 et Safari 3)

quand on clique sous "Actions" (menu à doite) en choisissant "Import
SVG", pas de pb, le svg s'affiche MAIS, si je suis la même procédure
avec "Import MathML", firefox me dit :
Erreur : req.responseXML has no properties

pourtant le fichier bernoulli.nml est bien là (sinon de toutes façons
j'aurai du avoir un message d'erreur)

autres questions :
- 1 - dans ma fonction "importHandler" (lignes 43/52) avant, au lieu de
req.xxx j'avais mis this.xxx ça a très bien marché (avec le svg) sur
Safari 3.1.1 mais pas du tout avec FF 2 ??? c'est un gag spécifique à ff
? je veux dire ; sur une image, si je fais :
mon_image.onload=onloadHandler;
dans onloadHandler je peux me référer à this et ainsi avoir, par ex :
var onloadHandler=function(){alert(this.src)};
normalement dans ce cas this est bien le "récepteur" ???

- 2 - bon, quand, ça roule et que j'ai bien un "req.responseXML" pour
importer le noeud root je dois faire :
req.responseXML.getElementsByTagName(<nom du noeud root>)[0]

y a-t'il un moyen de l'avoir directement ce "noeud" root, ce qui me gène
est que je suis obligé de le passer en paramètre ?

--
Une Bévue
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 3
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
SAM
Le #6412031
à la page (testé uniquement sous MacOS X avec FF 2 et Safari 3)

- 2 - bon, quand, ça roule et que j'ai bien un "req.responseXML" pour
importer le noeud root je dois faire :
req.responseXML.getElementsByTagName(<nom du noeud root>)[0]


si ça peut répondre à ta question (point 2) ?

var truc = req.responseXML.getElementsByTagName('*')[0];
alert(truc.tagName);


exo (html) :

<html>
<head>
<title>test root</title>
<meta http-equiv="content-type" content="text/html; charset=utf-8">
<script type="text/javascript">
window.onload = function() {
var truc = document.getElementsByTagName('*')[0];
alert(truc.tagName);
alert(truc); // object HTMLHtmlElement
if(truc.parentNode=='[object HTMLDocument]') alert('oui, truc = root');
var count = 0, txt='';
while(truc != null) {
truc=truc.parentNode;
txt+='n'+count+';'+truc;
count++;
}
alert('Qu'il y avait-il avant ? '+
txt); // count 0 : object HTMLDocument
}
</script>
</head>
<body>
<p>test
</body>
</html>


--
sm

unbewusst.sein
Le #6412311
SAM
var truc = document.getElementsByTagName('*')[0];


OK, merci, je vois...

donc, tu confirme +/- qu'il n'y a pas dans le dom une méthode "du style"
: getRoot() ???

curieux tout de même qu'on soit obligé soit de tripatouiller comme tu le
proposes, soit de connaître -- à l'avance -- le nom du noeud root...

quant au pb avec MathML, c'est corrigé, il suffit de renommer le fichier
bernoulli.nml en bernoulli.xml (le serveur le sert avec les bons
en-têtes) et ça, roule, c'est corrigé...

(conseil donné sur clj)


je regarde un peu plus l'histoire du root...
... ça me perturbe ;-)
--
Une Bévue

Mickaël Wolff
Le #6412301

y a-t'il un moyen de l'avoir directement ce "noeud" root, ce qui me gène
est que je suis obligé de le passer en paramètre ?


req.responseXML.documentElement

--
Mickaël Wolff aka Lupus Michaelis
http://lupusmic.org

SAM
Le #6412291
à la page (testé uniquement sous MacOS X avec FF 2 et Safari 3)

quand on clique sous "Actions" (menu à doite) en choisissant "Import
SVG", pas de pb, le svg s'affiche MAIS, si je suis la même procédure
avec "Import MathML", firefox me dit :
Erreur : req.responseXML has no properties


tu n'as qu'à avoir un fichier 'bernoulli.xml' au lieu de 'bernoulli.nml'
(ou avoir les bons en-têtes côté serveur ?)

--
sm

SAM
Le #6412281
SAM
var truc = document.getElementsByTagName('*')[0];


OK, merci, je vois...

donc, tu confirme +/- qu'il n'y a pas dans le dom une méthode "du style"
: getRoot() ???


Je crois +/- que si mais ne retrouve pas

quant au pb avec MathML, c'est corrigé, il suffit de renommer le fichier
bernoulli.nml en bernoulli.xml (le serveur le sert avec les bons
en-têtes) et ça, roule, c'est corrigé...


Ha ! ben ! pendant que je bricole de mon côté à rechercher la pane
d'autre connaissaient déjà le blème :-/

--
sm


unbewusst.sein
Le #6412741
Mickaël Wolff

req.responseXML.documentElement


sympa, merci beaucoup, ça roule !

--
Une Bévue

unbewusst.sein
Le #6412721
SAM

tu n'as qu'à avoir un fichier 'bernoulli.xml' au lieu de 'bernoulli.nml'
(ou avoir les bons en-têtes côté serveur ?)


ouais, merci (cf. + haut), les en-têtes côté serveur (free) pas la peine
d'y penser ???

à moins que ça puisse se mettre dans une directive serveur, côté
utilisateur...

mais bon xml me va très bien, je note une grande différence entre Safari
et firefox pour le MathML :

Saf ou WebKit me donnent :
Bernoulli Trials P ( E ) Probability of event E: Get exactly k heads in
n coin flips. = ( n k ) Number of ways to get exactly k heads in n coin
flips p Probability of getting heads in one flip k Number of heads ( 1 -
p ) Probability of getting tails in one flip n - k Number of tails

alors que Firefox 2 affiche :
Bernoulli Trials + la bonne formule

Un copié/collé me donne :

Bernoulli Trials





P
(
E
)

Probability of event E: Get exactly k heads in n coin flips.

=


(

n
k

)

Number of ways to get exactly k heads in n coin flips



p
Probability of getting heads in one flip



k
Number of heads





(
1
-
p
)

Probability of getting tails in one flip




n
-
k


--
Une Bévue

SAM
Le #6412711
SAM
var truc = document.getElementsByTagName('*')[0];


curieux tout de même qu'on soit obligé soit de tripatouiller comme tu le
proposes,


document.getElementsByTagName('*')[0];
n'est pas pour moi exactement du tripatouillage,

Même si Mickael a proposé le mot magique de remplacement
le gEBTN('*')[0] ne me pose pas de problème métaphysique,
ce qui ne serait pas le cas de :
document.firstChild
comme MDC semble penser qu'on serait tenté d'utiliser


--
sm


unbewusst.sein
Le #6412691
SAM
document.getElementsByTagName('*')[0];
n'est pas pour moi exactement du tripatouillage,


non, mais bon, c + élégant avec la méthode "magique"...

quant à MDC, il est bien noté que :

Si vous avez besoin de l'élément racine, utilisez
document.documentElement.
--
Une Bévue

unbewusst.sein
Le #6412681
Une Bévue
autres questions :
- 1 - dans ma fonction "importHandler" (lignes 43/52) avant, au lieu de
req.xxx j'avais mis this.xxx ça a très bien marché (avec le svg) sur
Safari 3.1.1 mais pas du tout avec FF 2 ??? c'est un gag spécifique à ff
? je veux dire ; sur une image, si je fais :
mon_image.onload=onloadHandler;
dans onloadHandler je peux me référer à this et ainsi avoir, par ex :
var onloadHandler=function(){alert(this.src)};
normalement dans ce cas this est bien le "récepteur" ???


là, j'ai eu une réponse sur clj, c'est un bug Firefox 2, d'ailleurs
corrigé dans firefox 3.0.b4 (testé et vérifié), malheureusement, même
problème sur IE7...

ça pose problème quand on a deux requêtes XHR qui se suivent: l'une pour
un fichier xml et l'autre four un fichier xsl transformant le premier,
comme le xml est généralement + lourd que le xsl ça peut collapser ...
--
Une Bévue

Publicité
Poster une réponse
Anonyme