Page 1 sur 1

code "cadre"

Posté : 10 janv. 2007, 14:16
par cmoi
Bonjour,

mon site est construit sur la base d'une page principale à l'intérieur de laquelle s'affiche les autres pages grâce à un code js "cadre" (je ne sais comment l'appeler).

Si je dois communiquer l'adresse d'une page, je souhaite que cette page s'affiche dans la principale. Comment faire ?

le script est le suivant:

Code : Tout sélectionner

<SCRIPT LANGUAGE="JavaScript"> if(screen.width < 1024) // 640 et - document.write("<iframe src='../Pages/index.htm' name='cadre' frameborder='0' hspace='0' style='' height='300' width='100%' scrolling='auto'></iframe>") else if(screen.width == 1024) // 800 document.write("<iframe src='../Pages/index.htm' name='cadre' frameborder='0' marginwidth='20' hspace='0' style='' height='470' width='100%' scrolling='auto'></iframe>") else if(screen.width > 1024) // 800 document.write("<iframe src='../Pages/index.htm' name='cadre' frameborder='0' marginwidth='20' hspace='0' style='' height='470' width='100%' scrolling='auto'></iframe>") </SCRIPT>
Merci pour votre aide.

Posté : 10 janv. 2007, 15:19
par charabia
Je me demande si un système de pseudo frames ne serait pas mieux dans ton cas. Je pense que tu ne sais pas ce que c'est, jettes un oeil ici : http://phpdebutant.org/article68.php et regardes si ça correspond à ton besoin.

Posté : 10 janv. 2007, 15:45
par Ryle
Je ne suis pas certain que ce soit des pseudo-frames qu'il lui faille, c'est d'avantage l'inclusion de la page dans un div...
enfin on verra bien ce qu'il en pense :)

Quoi qu'il en soit, en attendant, chaque iframe se comporte comme une fenêtre fille indépendante. Pour que tes liens s'ouvrent dans la fenêtre mère, il te faut donc soit donner un nom à celle-ci (avantage des frames) et la cibler avec un target="" dans tes liens

Code : Tout sélectionner

<a href="..." target="..."></a>
soit utiliser du javascript, et ouvrir les pages dans la fenêtre "parent" :

Code : Tout sélectionner

<a href="javascript:document.parent.location = '...';"></a>

Posté : 10 janv. 2007, 18:18
par cmoi
La réponse de Ryle me semble mieux convenir à mon problème que celle de Charabia.

Avec les pseudo-frames, il faudrait refaire mon site. Il n'en est pas question !
D'autant que mon problème ne se pose que de façon anecdotique.

Par contre, je ne vois pas bien comment inclure le target dans une adresse.
www.site.com/page.htm target="cadre"

Posté : 11 janv. 2007, 11:46
par Ryle
Ce n'est pas dans l'url qu'il faut l'inclure, mais comme attribut dans la balise du lien. En y réfléchissant, ça devrait même marcher avec un target="_top", donc sans avoir besoin de donner un nom à ta fenêtre.. A tester :)

Posté : 14 janv. 2007, 13:17
par cmoi
Faire un lien, je sais faire :
<a href="www.site.fr/page.htm" target="cadre">...</a>

Mais si je veux communiquer cette adresse, comment je fais ?
Si je donne www.site.fr/page.htm, ça n'ira pas. La page s'ouvrira hors du "cadre".

Posté : 14 janv. 2007, 17:00
par Ryle
Ah ben forcément, le target a pour but de fonctionner avec les liens de ton site. Si tu donnes une url a quelqu'un, la page s'affichera là ou il aura collé l'url lui...

Je comprends mieux ce que tu veux faire. En fait ce qu'il te faudrait, c'est vérifier lors de l'ouverture de la page qu'elle se trouve bien dans une frame (voire dans ta frame en particulier).

Code : Tout sélectionner

if (parent.frames.length < 1){ ... }
Si ce n'est pas le cas, tu rediriges l'utilisateur vers ta frame principale, avec le paramètre de ton choix pour dire de quelle page il provient.

Code : Tout sélectionner

window.top.location.href = "maFrame.php?from=page.php";
Dans ta frame, si le paramètre $from est spécifié, tu l'utilise pour ouvrir cette page spécifique dans ton cadre principal, sinon tu affiches la page par défaut.

Attention toutefois si tu as des pages au contenu sensible, à contrôler les paramètres qui sont passés ainsi. Le mieux dans ces cas là, au lieu d'un paramètre dans l'url, il suffit de créer une session et de stocker cette valeur dedans :)