Page 1 sur 1

Frame et transfert de nom de page

Posté : 01 août 2006, 13:54
par Valawa
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 ?

Posté : 01 août 2006, 15:06
par naholyr
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.

Posté : 01 août 2006, 23:36
par Valawa
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.

Posté : 02 août 2006, 12:59
par Ryle
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 :))

Posté : 03 août 2006, 18:17
par Invité
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).

Posté : 03 août 2006, 20:28
par Ryle
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

Posté : 04 août 2006, 20:02
par Valawa
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: