Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

XHR et responseXML (avec MathML)

22 réponses
Avatar
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

10 réponses

1 2 3
Avatar
SAM
à la page <http://thoraval.yvon.free.fr/Fixed_layout/import_nodes.xhtml>
(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]


<http://xmlfr.org/listes/xml-tech/2005/11/0031.html>
<http://xmlfr.org/listes/xml-tech/2005/11/0027.html>
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

Avatar
unbewusst.sein
SAM wrote:

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

Avatar
Mickaël Wolff

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

Avatar
SAM
à 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


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

Avatar
SAM
SAM wrote:

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


Avatar
unbewusst.sein
Mickaël Wolff wrote:


req.responseXML.documentElement


sympa, merci beaucoup, ça roule !

--
Une Bévue

Avatar
unbewusst.sein
SAM wrote:


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

Avatar
SAM
SAM wrote:

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
<http://developer.mozilla.org/fr/docs/DOM:document.firstChild>


--
sm


Avatar
unbewusst.sein
SAM wrote:

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

Avatar
unbewusst.sein
Une Bévue wrote:

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

1 2 3