Rurikos
Messages postés12Date d'inscriptionmardi 9 janvier 2007StatutMembreDernière intervention18 mars 2007
-
15 mars 2007 à 22:22
cs_bultez
Messages postés13615Date d'inscriptionjeudi 13 février 2003StatutMembreDernière intervention15 octobre 2013
-
18 mars 2007 à 18:42
Bonjours,
Je poste sur ce forum pour vous énoncer mes problèmes auquel je n'ai pas réussi à trouver de solution, autant en passant par google qu'en cherchant par mot clé sur ce forum.
Le premier de mes soucis, je pense qu'il doit être assez connu :
Mon site personnel est composé de 2 frames, une à gauche qui sert de menu et qui est fixe, et celle de droite qui est la frame principale de navigation. Si on commence la navigation à partir de l'index tout va bien on peut aller n'importe où sans qu'une ombre se pointe. Mais lorsque je veux par exemple envoyer l'url d'une page particulière à quelqu'un (url de la frame de droite), il se retrouve effectivement dans la frame de droite mais sans la barre de menu a gauche! Le même problème étant qu'en visitant mes pages via google, on atterri sur une frame seule sans qu'il y ait le menu qui s'affiche.
Ma question après ce long discours est donc : Existe il un script permettant de réaffichant le jeu de frame originel? Mais sans que ça revienne à l'index.
Mon deuxième problème, peut être plus simple mais qui est lié au premier :
Quand je navigue sur mon site, l'url présente dans la barre du navigateur reste fixe (ex : http://monsite.com), et cela sur toutes les pages.
Ma question est donc : Comment je fais pour que l'url de la frame de navigation apparaisse dans la barre du navigateur?
Je précise que mon site est hebergé chez free, et que mon site est fait en html avec css et javascript, et surtout que je suis encore un novice en la matière. Je me permet de laisser l'url de mon site au cas ou vous voudriez visualiser le problème (pas pour faire de la pub, ça ne m'apporte rien), http://myrmecophoto.free.fr
cs_bultez
Messages postés13615Date d'inscriptionjeudi 13 février 2003StatutMembreDernière intervention15 octobre 201330 16 mars 2007 à 09:38
Bonjour,
il y a eu portant pas mal de réponses à ces sujets sur ce forum.
pour la 1ère question : tester si on est dans une [i]frame, sinon rediriger.
<hr />
Rurikos
Messages postés12Date d'inscriptionmardi 9 janvier 2007StatutMembreDernière intervention18 mars 2007 16 mars 2007 à 13:43
Bonjour,
Avant tout, merci de votre réponse.
Concernant le sujet, j'ai une nouvelle fois cherché en emplyant d'autres mots clés, et je ne suis toujours pas arrivé à trouver une solution qui fonctionne. J'ai vu des bouts de codes qui ressemblaient a ceci :
parent.nom_frame
Mais rien n'a fonctionné, pas le moindre changement.
Pour le deuxième problème je n'ai pas cherché, il se peut que je dois changer complètement la façon dont on navigue sur le site (plus de frame.
Excusez mon niveau, mais je n'ai pas trop compris ce que vous aviez dit dans cette phrase :"tester si on est dans une [i]frame, sinon rediriger." J'ai fais des recherches sur ceque veut dire iframe. Mon site n'a pas de iframe, et je ne pense pas en mettre car les dimensions sont limitées, ce qui ne m'arange pas du tout. Que vouliez vous dire par "rediriger"?
Si vous avez une piste sur laquelle je peux chercher, un tutorial ou autre, j'en serait très reconnaissant.
Rurikos
Messages postés12Date d'inscriptionmardi 9 janvier 2007StatutMembreDernière intervention18 mars 2007 16 mars 2007 à 15:31
Merci encore pour vos réponses rapides,
Mais cette technique m'enverra alors toujours sur f0 qui enverra elle même toujours sur les 2 même pages, si j'ai par exemple f3, ca enverra sur f0 qui recrera les frames f1 et f2. La solution serait donc de créer une page de jeu de frame (comme f0) pour chacune des page j'ai créé?
Rurikos
Messages postés12Date d'inscriptionmardi 9 janvier 2007StatutMembreDernière intervention18 mars 2007 16 mars 2007 à 18:05
J'ai inclut les codes donnés dans les pages : f0, f1, f2 et f4. Je fais le test avec f4 pour être sûr que ca fonctionne
Et bisarrement ca ne fonctionne pas, la page f4 s'affiche comme si ne rien n'était. Par contre je crois reconnaître une erreur dans la f1, je vois ceci qui s'affiche :
cs_bultez
Messages postés13615Date d'inscriptionjeudi 13 février 2003StatutMembreDernière intervention15 octobre 201330 17 mars 2007 à 08:41
>> bizarrement ca ne fonctionne pas
ah... et comment peut-on répondre sans rien voir ?
car pour moi : ça baigne.
nous donner un extrait des dites pages ( les quelques lignes
! style mon exemplepas plus. pas des pages et des pages ! )
>>tous ces codes doivent bien se mettre entre </head> et ?
aucune importance.
la coutume est de mettre les function entre <head> et </head>,
le corps derrière
le seul point à respecter c'est de ne pas oublier que le html/javascript
est interprété, lignes par lignes dans l'ordre.... et qu'on ne peut pas
utiliser un élément non encore interprété.
certes... mais leftFrame c'est quoi ? pour javascript : un objet.
et pas du tout "la page" ( contenue dans cette frame ).
de plus si on lance directement f2 ou f3 ? leftFrame est indéfini
votre navigateur doit donner une erreur, c'est sûr (?)
regardez donc self.location.pathname
[ uniquement ce qui est derrière le dernier / ( lastIndexOf ? )
et unescape servira probablement ]
<hr size ="2" width="100%" />
°°° dans index.htm rien pour tester la frame qu'il faut "ré"afficher ?
si on lance index.htm/?toto.htm
window.location.search c'est "?toto.htm"
il faut donc, par exemple, dans index.htm faire un document.write
du frameset, et des frames, avec le src de mainFrame=ce qui a été
reçu ( ou une valeur par défaut ? ) par exemple.
<hr size="2" width="100%" />
la plupart des intervenants sur CodesSources pourraient
vous pondre une solution... mais... qu'apprendriez-vous ?
maintenant, si vous y tenez , si vous ne vous en sortez pas,
je ( et pas moi seulement ) peux vous mettre un exemple
cs_bultez
Messages postés13615Date d'inscriptionjeudi 13 février 2003StatutMembreDernière intervention15 octobre 201330 17 mars 2007 à 15:12
à propos...
Avec Internet Explorer, activer le deboggage, et mieux, télécharger le "Debogger IE" Avec FireFox, regarder la "console d'erreurs", et mieux, télécharger FireBug <hr />
Rurikos
Messages postés12Date d'inscriptionmardi 9 janvier 2007StatutMembreDernière intervention18 mars 2007 17 mars 2007 à 16:31
J'ai installé les 2 modules comme conseillé pour firefox et IE. Ca à l'air vraiment complet, il y a même des erreurs sur mon site que je ne savais pas...
J'avoue en fait que la tache est vraiment compliqué... Mais je vais persévéré encore avant de donner ma langue au chat.
Le problème étant déjà que je ne sais absolument pas ce que veux dire bon nombre de fonction, comme par exemple tout ce que vous m'avez listé (document.write, self.location.pathname, lastIndexOf, etc.). Donc ne connaissant pas le code, ne sachant pas ce qu'il veut dire, j'ai du mal à savoir interpréter les choses et donc à les mettre en oeuvre comme il faut...
Pour commencer, que veut dire self.location.pathname, lastIndexOf etunescape, ou dois je le mettre en règle général?
Et pour le document.write à mettre dans l'index.htm, je ne vois pas du tout ou le mettre, cette commande c'est du javascript c'est bien ça? (j'ai un peu honte à demander ça...)
cs_bultez
Messages postés13615Date d'inscriptionjeudi 13 février 2003StatutMembreDernière intervention15 octobre 201330 17 mars 2007 à 16:59
bon... y'a pu qu'à, alors...
<hr size="2" width="100%" />
f0.htm la page principale
<script type="text/javascript">
var tmp = (window.location.search.length<2) ? 'f2.htm' : window.location.search.substring(1) ;
// on prend le paramètre transmis et/ou "f2.htm" par défaut
document.writeln( '<frameset rows="40%,*">'+
' <frame name="h" id="h" src="f1.htm" />'+
' <frame name="b" id="b" src="'+tmp+'" />'+
'</frameset>');
// il y a d'autres solutions pour modifier le .src du frame !
</script>
<hr size="2" width="100%" />
f1.htm "le menu"
la page "f1"
	[f2.htm lien vers f2]
	[f3.htm lien vers f3]
<script type="text/javascript">
// pour afficher un exemple, pas plus
document.write("self :	"+unescape(self.location.href)+"
top :	"+unescape(window.top.location.href));
</script>
<hr size="2" width="100%" />
f#.htm les autres pages ( # de 2 à n )
la page f2
<script type="text/javascript"
src="js.js" /></script>
<hr size="2" width="100%" />
js.js le .js à inclure dans toutes les pages où la rédirection est désirée
if ( self.location.href == window.top.location.href )
{ // donc ici, ça veut dire que la page lancée, l'a été directement
// et donc que le menu n'est pas présent
var url=unescape(self.location.pathname); // nom complet de la page elle même
var adr=url.lastIndexOf("/");
var url=url.substring(adr+1); // nom ( f#.htm dans cet exemple )
location.href="f0.htm?"+url; // on charge f0.htm avec le nom de la "page actuelle"
}
<hr size="2" width="100%" />
ça devrait baigner, même si on peut sûrement mieux faire, améliorer, voir autrement.
( ne serait-ce que faire ça coté serveur, avec le langage sur le serveur, ce qui ne serait
pas plus mal, car ici ça ne fonctionne que si javascript est activé ! )
Rurikos
Messages postés12Date d'inscriptionmardi 9 janvier 2007StatutMembreDernière intervention18 mars 2007 17 mars 2007 à 18:57
Désolé dedevoir en arriver là .
J'ai fais tout ce qui est dit, j'ai copié les lignes de codes là ou il fallait, remplacé les f* par les vrai noms de pages, mais comme toujours il y a un hic...
Si je lance f0, f2 ou f3 j'ai ceci qui apparait dans mon anavigateur :
Sur la capture d'écran on ne voit pas bien mais il y a écrit :
la page "menu"
[file:///G:/myrmecophoto%20v3/accueil.htm lien vers accueil]
[file:///G:/myrmecophoto%20v3/news.htm lien vers news]
self : file:///G:/myrmecophoto v3/menu.htm
top : file:///G:/myrmecophoto v3/menu.htm
Ce qui s'affiche est en réalité f1 qui est autre que menu.htm
Il y a donc visiblement un problème avec f1 (menu).
Si je récapitule (pour la suite de ce que je vais écrire):
f0 = index.htm
f1 = menu.htm
f2 = accueil.htm
f3 = news.htm
js.js = jsframe.js
Et voilà ce que j'ai mis dans mes pages (en rouge ce que j'ai édité) :
f0 ==> index
<hr size="2" width="100%" /><script type="text/javascript">
var tmp = (window.location.search.length<2) ? 'accueil.htm' : window.location.search.substring(1) ;
// on prend le paramètre transmis et/ou "accueil.htm" par défaut
document.writeln( '<frameset rows="40%,*">'+
' <frame name="h" id="h" src="menu.htm" />'+
' <frame name="b" id="b" src="'+tmp+'" />'+
'</frameset>');
// il y a d'autres solutions pour modifier le .src du frame !
</script>
f1 ==> menu
<hr size="2" width="100%" />
la page "menu"
	[accueil.htm lien vers accueil]
	[news.htm lien vers news]
<script type="text/javascript">
// pour afficher un exemple, pas plus
document.write("self :	"+unescape(self.location.href)+"
top :	"+unescape(window.top.location.href));
</script>
( self.location.href == window.top.location.href )
{ // donc ici, ça veut dire que la page lancée, l'a été directement
// et donc que le menu n'est pas présent
var url=unescape(self.location.pathname); // nom complet de la page elle même
var adr=url.lastIndexOf("/");
var url=url.substring(adr+1); // nom ( #.htm dans cet exemple )
location.href="index.htm?"+url; // on charge index.htm avec le nom de la "page actuelle"
}
Rurikos
Messages postés12Date d'inscriptionmardi 9 janvier 2007StatutMembreDernière intervention18 mars 2007 18 mars 2007 à 15:28
Bonjour!
Un gros gros merci pour vous dire que tout marche maintenant! j'ai un peu édité pour faire apparaître le menu à gauche au lieu d'au dessus.
Tout fonctionne nickel .
Je vais maintenant m'atteler au deuxième problème qui concerne les urls.