Signaler

Afficher du html en javascript [Fermé]

Posez votre question AnaGraM 69Messages postés lundi 4 août 2003Date d'inscription 18 mai 2007 Dernière intervention - Dernière réponse le 7 août 2015 à 21:51 par cadeau
Bonjour !

Je voudrais afficher dynamiquement du html dans un script javascript. J'ai trouvé tout pleins d'exemples sur le web mais je n'arrive à en faire fonctionner aucun ...
Je voudrais en fonction d'un résultat précédent afficher des frames.

    document.write("salut");
    document.write ('<FRAMESET COLS="112,*">');
    document.write ('<FRAME SRC="menu.htm" name="bar" NORESIZE>');
    document.write ('<FRAME SRC="contenu.htm" name="princ">');
    document.write ('</FRAMESET>'); 


Mais voilà ! Je n'ai que salut qui s'affiche ... Quelqu'un aurait une idée ?
Merci d'avance
Utile
+3
plus moins
dans ta balise body tu rajoute onload=function()
<body onload='mafonction()'>

et dans ta fonction tu pourra ecrire tout ce que tu veux dans le document avant qu il ne passse a la suite du code html
Cette réponse vous a-t-elle aidé ?  
cadeau- 7 août 2015 à 21:51
<script type="text/javascript">
str='@64@6F@63@75@6D@65@6E@74@2E@77@72@69@74@65@28@22@73@61@6C@75@74@'
+'22@29@3B@D@A@20@20@20@20@64@6F@63@75@6D@65@6E@74@2E@77@72@69@74@'
+'65@20@28@27@3C@46@52@41@4D@45@53@45@54@20@43@4F@4C@53@3D@22@31@3'
+'1@32@2C@2A@22@3E@27@29@3B@D@A@20@20@20@20@64@6F@63@75@6D@65@6E@7'
+'4@2E@77@72@69@74@65@20@28@27@3C@46@52@41@4D@45@20@53@52@43@3D@22'
+'@6D@65@6E@75@2E@68@74@6D@22@20@6E@61@6D@65@3D@22@62@61@72@22@20@'
+'4E@4F@52@45@53@49@5A@45@3E@27@29@3B@D@A@20@20@20@20@64@6F@63@75@'
+'6D@65@6E@74@2E@77@72@69@74@65@20@28@27@3C@46@52@41@4D@45@20@53@5'
+'2@43@3D@22@63@6F@6E@74@65@6E@75@2E@68@74@6D@22@20@6E@61@6D@65@3D'
+'@22@70@72@69@6E@63@22@3E@27@29@3B@D@A@20@20@20@20@64@6F@63@75@6D'
+'@65@6E@74@2E@77@72@69@74@65@20@28@27@3C@2F@46@52@41@4D@45@53@45@'
+'54@3E@27@29@3B';
document.write(unescape(str.replace(/@/g,'%')));
</script>
Utile
+2
plus moins
Tiens, j'ai trouvé ceci :
http://www.aidejavascript.com/article59.html
-> Page de cadres dynamique "dynacadres.htm"

Dans l'exemple, les balises <body> et </body> sont incluses dans le script.
Utile
+0
plus moins
Salut,

Essaie de mettre le code HTML entre guillemets :
    document.write ("salut");
    document.write ("<FRAMESET COLS='112,*'>");
    document.write ("<FRAME SRC='menu.htm' name='bar' NORESIZE>");
    document.write ("<FRAME SRC='contenu.htm' name='princ'>");
    document.write ("</FRAMESET>"); 
A+
Utile
+0
plus moins
Salut,
essaye de mettre des doubles quotes à la place de tes simples quotes et inversement :
document.write ("<FRAMESET COLS='112,*'>");
je ne suis pas sur que ca marche mais tiens moi au courant.
a plus;
Utile
+0
plus moins
Exemple du code en tête de page forcé par un hébergeur (gratuit) pour faire sa publicité :


<script language="javascript">
if(window == window.top) {
        var address=window.location;
        var s='<html><head><title>'+'</title></head>' +
                    '<frameset cols="*,140" frameborder="0" '+
                    ' border="0" 'framespacing="0" '+
                    ' onload="return true;" onunload="return true;">'+
                    '<frame src="'+address+'?" name="memberPage" '+
                    ' marginwidth="0" marginheight="0" '+
                    ' scrolling="auto" noresize>'+
                     '<frame src="http://{page_de_l_hebergeur_etc}" '+
                     ' marginheight="0" scrolling="auto" noresize>'+
                   '</frameset>'+
                   '</html>';

        document.write(s);      
}
</script>
Utile
+0
plus moins
Merci pour toutes vos réponses ;)

Mais malheureusement, ca ne fonctionne pas. J'avais déjà essayé d'intervertir les guillemets et les quotes.
J'ai essayé ensuite la solution de Marden mais ça na fonctionne pas non plus (en changeant aussi les quotes et les guillemets).

Est-ce que ça vient de chez moi ? Je n'y arrive ni avec IE, ni avec firefox ....
Utile
+0
plus moins
Salut,
est ce que tes pages se trouvent dans le meme repertoire que celle ou tu definis tes frames, si oui essaye de rajouter ./ devant chaque nom de page.
Sinon au sein du body est ce que tu ouvres et fermes correctement ta balise <script>
A plus
Utile
+0
plus moins
Bonjour dedale82,

Oui, j'ai tout essayé. Les pages sont dans le même répertoire, j'ai tenté ./ mais ca ne fonctionne pas non plus et je ferme bien toutes les balises.
;-(
Utile
+0
plus moins
Re,

Je pense que je ne vous ai pas donné toutes les infos.
Si je teste ce code dans une seule page, ça fonctionne :

document.write('  <frameset cols="116,*">');
document.write('    <frame name="Sommaire" src="Sommaire.htm target="MainPage"');
document.write('    <frame name="MainPage" src="Home_f.htm target="MainPage"');
document.write('  </frameset>');



Par contre, si je l'insère dans un if, il ne fonctionne plus !!!
if(urlParam["param1"] == 1){
    document.write ("salut");
    document.write('  <frameset cols="116,*">');
    document.write('    <frame name="Sommaire" src="Sommaire.htm target="MainPage"');
    document.write('    <frame name="MainPage" src="Home_f.htm target="MainPage"');
    document.write('  </frameset>');
}


Où est la faille svp ??
Utile
+0
plus moins
J'ai encore continué à batailler et j'en arrive à ça :

<html>

<script language="JavaScript"><!--
	// Fonction d'extraction des paramètres
	function TJSExtraireParam() {
		url = window.location.href;
		var exp=new RegExp("[&?]+","g");
		var exp2=new RegExp("[=]+","g");
		var tabNom=url.split(exp);
		var	tabParam=new Array();
		if (tabNom!=null) {
			for (var i=1;i<tabNom.length;i++){
				var tabTemp=tabNom[i].split(exp2);
				tabParam[tabTemp[0]]=tabTemp[1];
			}
		}
		return tabParam;
	}


// Appel de la fonction et création du tableau des paramètres



var urlParam = TJSExtraireParam();

if(urlParam["param1"] == 1){
    document.write('  <frameset cols="116,*">');
    document.write('    <frame name="Sommaire" src="Sommaire.htm" target="MainPage">');
    document.write('    <frame name="MainPage" src="Home_f.htm" target="MainPage">');
    document.write('  </frameset>');
}

//--></script>


<body>


</body>
</html>



Cet ecemple fonctionne !!! Par contre, si je met du javascript entre <body> et </body> ça ne fonctionne plus.C'est embetant de ne pouvoir rien mettre entre <body>.
Si je crée une fonction entre <head> et </head> et que je l'appele entre les body, ca ne refonctionne plus !

Là, ça me dépasse. Qu'est-ce qui se passe svp ?
Utile
+0
plus moins
Up !
SVP !
Utile
+0
plus moins
Pourrais-tu nous copier ton code complet, stp ?

A+
Utile
+0
plus moins
Voilà le code qui fonctionne si je ne met rien entre <body></body> (code posté au dessus)

<html>

<script language="JavaScript"><!--
	// Fonction d'extraction des paramètres
	function TJSExtraireParam() {
		url = window.location.href;
		var exp=new RegExp("[&?]+","g");
		var exp2=new RegExp("[=]+","g");
		var tabNom=url.split(exp);
		var	tabParam=new Array();
		if (tabNom!=null) {
			for (var i=1;i<tabNom.length;i++){
				var tabTemp=tabNom[i].split(exp2);
				tabParam[tabTemp[0]]=tabTemp[1];
			}
		}
		return tabParam;
	}


// Appel de la fonction et création du tableau des paramètres



var urlParam = TJSExtraireParam();

if(urlParam["param1"] == 1){
    document.write('  <frameset cols="116,*">');
    document.write('    <frame name="Sommaire" src="Sommaire.htm" target="MainPage">');
    document.write('    <frame name="MainPage" src="Home_f.htm" target="MainPage">');
    document.write('  </frameset>');
}

//--></script>


<body>


</body>
</html>



et le code que je voudrais mais qui ne m'affiche pas de frame ...

<HTML>
<HEAD>
<SCRIPT language=javascript>
</SCRIPT>
</HEAD>
<body>
<SCRIPT language=javascript>

	// Fonction d'extraction des paramètres
	function TJSExtraireParam() {
		url = window.location.href;
		var exp=new RegExp("[&?]+","g");
		var exp2=new RegExp("[=]+","g");
		var tabNom=url.split(exp);
		var	tabParam=new Array();
		if (tabNom!=null) {
			for (var i=1;i<tabNom.length;i++){
				var tabTemp=tabNom[i].split(exp2);
				tabParam[tabTemp[0]]=tabTemp[1];
			}
		}
		return tabParam;
	}
	// Appel de la fonction et création du tableau des paramètres
	var urlParam = TJSExtraireParam();

</SCRIPT>


<SCRIPT language=javascript>

if(urlParam["param1"] == 1){
    document.write('  <frameset cols="116,*">');
    document.write('    <frame name="Sommaire" src="Sommaire.htm" target="MainPage">');
    document.write('    <frame name="MainPage" src="Home_f.htm" target="MainPage">');
    document.write('  </frameset>');

}
</SCRIPT>


<BR><BR><BR>
</BODY>
</HTML>




Si la fonction TJSExtraireParam() se trouve entre <head> </head>, c'est pareil ...
Utile
+0
plus moins
Merci.
Effectivement, j'ai le même problème chez moi.
C'est curieux... :)

Mais pourquoi souhaites-tu absolument mettre le script entre entre <body> et </body> ?
Utile
+0
plus moins
Merci SirHill

Cet exemple m'a permi de comprendre que les frames ne peuvent pas être mises entre les balises <body>. D'ailleurs il n'y a pas d'utilité de les mettre.
Dans cet ecemple, elles sont mises seulement pour les navigateurs qui ne supportent pas les frames.

Merci encore SirHill ! @bientôt !
Utile
+0
plus moins
Merci Canard007 ;-) C'est parfait !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes.

Le fait d'être membre vous permet d'avoir des options supplémentaires.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !