Frame et transfert de nom de page

Valawa
Invité n'ayant pas de compte PHPfrance

01 août 2006, 13:54

Bonjour,

Je dispose d'une page index.php, qui est une frame faisant appel à 2 pages :
- une page menu.php
- une page internet (par exemple www.google.fr)

Code : Tout sélectionner

<frameset rows="80,*" frameborder="NO" border="0" framespacing="0"> <frame src="menu.php" name="topFrame" scrolling="NO" noresize> <frame src="http://www.google.fr" name="mainFrame"> </frameset>
J'aimerais afficher dans ma fenêtre topFrame (menu.php) le lien se trouvant dans ma page mainFrame, en utilisant la fonction $_SERVER["php_self"].

Est-ce possible ?

Administrateur PHPfrance
Administrateur PHPfrance | 3131 Messages

01 août 2006, 15:06

Ce n'est pas possible pour des raisons de sécurité : on ne peut pas modifier le DOM d'une page n'appartenant pas au même domaine que le script JS.
Si ç'avait été une page de ton site tu aurais pu sans problème récupérer les liens avec document.getElementsByTagName('A') et modifier leur attribut href. C'est quelque chose que tu ne pourras pas faire sur une page d'un site externe.

Valawa
Invité n'ayant pas de compte PHPfrance

01 août 2006, 23:36

Merci pour ta réponse.

Sans vouloir paraitre insistant, n'existe pas une possibilité genre :

Code : Tout sélectionner

doc=top.frames.location.href;
Cela me parait bizarre que cette fonction existe et qu'on ne puisse pas l'exploiter.

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

02 août 2006, 12:59

Je pense que vous ne parlez pas de la même chose :)

A priori il est tout à fait possible de récupérer l'url de la page ouverte dans ta frame principale depuis ton menu (et potentiellement de modifier celui-ci)

Essaye depuis la page menu.php un truc du genre :

Code : Tout sélectionner

url = parent.mainFrame.location.pathname;
(il me semble que le .href a juste pour but de modifier l'url, je ne suis pas certain qu'on puisse la récupérer... .pathname devrait du coup convenir :))

Invité
Invité n'ayant pas de compte PHPfrance

03 août 2006, 18:17

Voilà, c'est exatement ce que je souhaite faire... mais en esayant, il semble que cela ne fontionne pas et IE renvoie une erreur en barre d'état.

Par exemple, en essayant avec :

Code : Tout sélectionner

url = parent.frames.location.pathname;
Je réussi à avoir dans ma frame supérieur (topFrame) le nom de la page regroupant l'ensemble des 2 cadres.

Maintenant, j'aimerai bien récupérer le nom de la page se trouvant dans le cadre inférieur (mainFrame).

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

03 août 2006, 20:28

Et tu as essayé avec "mainFrame" c'est à dire le nom de ta frame, comme je l'ai suggéré, plutôt qu'avec "frames" ?

Code : Tout sélectionner

url = parent.mainFrame.location.pathname; // ou bien url = parent.frames["mainFrame"].location.pathname;
- parent : remonte au niveau parent de la fenêtre (donc si tu l'appelles depuis ta page menu, ça remonte au niveau de la frame)
- parent.frames["mainFrame"] ou parent.mainFrame : remonte au niveau de la fenêtre parent et descend dans la frame nommée mainFrame
- parent.mainFrame.location : accède à la barre d'adresse
- parent.mainFrame.location.pathname : retourne son contenu

Valawa
Invité n'ayant pas de compte PHPfrance

04 août 2006, 20:02

Hello Ryle,

Oui... j'ai exactement suivi les instructions que tu m'as communiquées, mais rien n'y fait, dans la barre d'etât, j'ai toujours cette satanée icône qui m'afiche une erreur javascript !

Par conséquent, rien ne s'affiche dans ma page "menu.php"

Grrrrr, ca m'énerve !!!! :lol: