Envoyé par : goth
Date : 04/02/2007 21:32
Bonjour, je suis en train de creer une extension et j'ai un petit soucis. Le but est d'ajouter des elements html sur une page, apres qu'lle est eté chargé.
Dans l'ensemble, ca marche mais j'ai des problemes de saut de ligne.
Un exemple :
var resultTxt = document.createTextNode("texte1"); var resultTxt2 = document.createTextNode("texte2"); var divGlob=document.createElement("div"); divGlob.setAttribute('id','resultDiv'); divGlob.setAttribute('style','position: absolute;left : 10px;top : 10px; z-index:99; margin-right:10px;width:300px; background-color:#ffffff;border: 1px black solid;-moz-opacity:0.5;opacity: 0.5;'); divGlob.appendChild(resultTxt); divGlob.appendChild(document.createElement("br")); divGlob.appendChild(resultTxt2);
Donc mes elements html se trouve bien au bon endroit en transparence, mais aucun saut de ligne entre les deux elements textes (ils sont alignés).
J'ai egalement essayé d'encapsuler des div (=<div><div>text</div><div>text2</div></div> avec des createElement) mais sans succes, les deux textes sont toujours en ligne...
Si vous avez une idée...
Merci
Envoyé par : Paul Rouget
Date : 04/02/2007 23:49
Mets les dans des <p>.
<p> toto </p> <p> titi </p>
Envoyé par : goth
Date : 05/02/2007 00:28
C'est ca, merci pour l'astuce. Y'a une raison particulière ou bien, c'est comme ca un poin c'est tout?
En tout cas merci
Envoyé par : goth
Date : 05/02/2007 00:41
Bon en fait j'ai parlé un petit peu vite...ca marche toujours pas...
Bon voila ce que je fais:
Je creer deux texte
var resultTxt = document.createTextNode("Les recommandations"); var resultTxt2 = document.createTextNode("Les recommandations2");
je met chacun de ces texte dans une balise <p>
var pClose=document.createElement("p"); pClose.setAttribute('style','text-align:right; padding-right:5px; padding-top:5px;'); pClose.appendChild(resultTxt);
var pTxt=document.createElement("p"); pTxt.appendChild(resultTxt2);
et chacunes des balises <p> dans un <p> global
var divGlob=document.createElement("p"); divGlob.setAttribute('id','resultPopup'); divGlob.setAttribute('style','position: absolute;left : 10px;top : 10px;z-index:99;margin-right:10px;width:400px;background-color:#ffffff;border: 1px black solid;-moz-opacity:0.5;opacity: 0.5;'); divGlob.appendChild(pClose); divGlob.appendChild(pTxt);
J'ajoute le tout au document courant
var doc = content.document; doc.body.appendChild(divGlob);
Et le tout s'affiche en ligne alors. J'ai essayé des <br>,<div>...rien
Je suis quelque peu déappointé :/
Envoyé par : Paul Rouget
Date : 05/02/2007 01:00
Il n'y a aucun rapport entre ta création dynamique de ton html et son rendu. Pourquoi n'écrit tu pas simplement le contenu HTML dans ce forum, ce sera tellement plus simple.
Envoyé par : goth
Date : 05/02/2007 01:30
ben fait je veux creer quelchose comme ca :
<div id='resultPopup' style='position: absolute;left : 10px;top : 10px;z-index:99;margin-right:10px;width:400px;background-color:#ffffff;border: 1px black solid;-moz-opacity:0.5;opacity: 0.5;'> <div style='text-align:right; padding-right:5px; padding-top:5px;'> texte 1 </div> <div> texte 2 </div> </div>
Le probleme est que "Texte 1" et "texte 2" sont en ligne alors qu'ils devrait etre en colonne (le conportement par defaut des div il me semble)
Envoyé par : Paul Rouget
Date : 05/02/2007 03:23
Hum... ok, et donc ? Si tu crées dynamiquement ce contenu, ça ne donne pas le meme rendu qu'une version "fichier" ?
Envoyé par : goth
Date : 05/02/2007 14:28
ben on justement dans un fichier (au hasard un html) ca me donne quelque chose comme
texte 1 texte 2
Et quand je crée les elemnts dynamiquement ca me donne quelque chose comme
texte 1 texte 2
(avec texte2 un poil plus haut que texte1 si ca peut aider :p)
Envoyé par : goth
Date : 05/02/2007 14:56
c bon j'ai resolu mon probleme j'ai rajouté des dicplay block dans les div et ca passe
Envoyé par : chBok
Date : 05/02/2007 16:04
J'ai l'impression en fait que le problème viendrait d'un héritage des propriétés CSS qui ne se fait pas bien lors de l'insertion de noeuds dans l'arbre DOM. Ca reste à vérifier ?
Envoyé par : goth
Date : 05/02/2007 20:53
non en fait ,j'ai resolu ca grace a un autre post), http://xulfr.org/forums/read.php?1,4791,(..)
thefab a écrit:
Oui c'est vrai que les éléments DOM doivent être
créés dans le document auquel ils appartiennent.
C'est en partie pour celà qu'ils doivent être créé
avec des méthodes createXXX() et non pas avec new
XXX().
Bien vu, c'est vrai que par après ça paraît
évident.
Et c'est vrai que apres ca parait evident :p En tout cas plus de probleme
Il n'est plus possible de poster des messages dans ce forum.
Copyright © 2003-2013 association xulfr, 2013-2016 Laurent Jouanneau - Informations légales.
Mozilla® est une marque déposée de la fondation Mozilla.
Mozilla.org™, Firefox™, Thunderbird™, Mozilla Suite™ et XUL™
sont des marques de la fondation Mozilla.