ALTERNATIVE CONVIVIALE AUX REDIRECTIONS SI FRAMES ABSENTS (V.2)

sarl_adc Messages postés 141 Date d'inscription lundi 3 novembre 2003 Statut Membre Dernière intervention 20 octobre 2005 - 21 juil. 2004 à 16:56
takali Messages postés 29 Date d'inscription mardi 19 avril 2005 Statut Membre Dernière intervention 13 octobre 2008 - 11 août 2009 à 10:01
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/24740-alternative-conviviale-aux-redirections-si-frames-absents-v-2

takali Messages postés 29 Date d'inscription mardi 19 avril 2005 Statut Membre Dernière intervention 13 octobre 2008
11 août 2009 à 10:01
Plus simple :

<script type= »text/javascript »>
if (top.frames.length==’0')
{
window.location.replace( »url-de-redirection »);

}
</script>
saturnin125 Messages postés 1 Date d'inscription mardi 31 octobre 2006 Statut Membre Dernière intervention 21 février 2007
21 févr. 2007 à 19:01
Excelent conbiné avec ce script (trouvé sur le site) cela permet de n'afficher le bouton de redirection que lorsque la frame est absente !
le tous est a mettre entre les balise <head> </head> ;-)

<script language="JavaScript"><!--
function set_button() {
if (parent.location.href == self.location.href) {
btn1.style.visibility="visible";}
else {
btn1.style.visibility="hidden";
alert('Wouahhhh ! JavaScript ! \nand we did it...');}
}
function show_frameset() {
if (parent.location.href == self.location.href) {
window.location.replace('origine.htm?test.html');
}}
//--></script>







<SCRIPT language="JavaScript" type="text/javascript">
if ((document.getElementById) && (window.top.document.getElementById('EntetePageSeule')))
{
window.top.document.getElementById('EntetePageSeule').style.display="inline";
}
</SCRIPT>

<!-- VERSION 2 avec correction d'un bug des vieux MSIE, et prise en charge qd un site externe affiche votre page dans ses frames -->
<SCRIPT language="JavaScript" type="text/javascript">
//Recherche du frame parent avec interception des erreurs
try
{
//Test si navigateur récent avec support de "getElementById"
if ((document.getElementById) && (window.parent.document.getElementById('EntetePageSeule')))
{
//Si page affichée sans frames, le DIV devient visible
window.parent.document.getElementById('EntetePageSeule').style.display="inline";
}
}
//Si il y a eu une erreur (ex: page affichée dans le frame d'un autre site)
catch(e)
{
//Test si navigateur récent avec support de "getElementById"
if ((document.getElementById) && (window.document.getElementById('EntetePageSeule')))
{
//Le DIV devient visible
window.document.getElementById('EntetePageSeule').style.display="inline";
}
}
</SCRIPT>



a+
saturnin
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
15 déc. 2004 à 15:06
"oublie pô de le breveter !!! :o|"=> cela ne corresponds pas à ma philosophie : posséder une resource inépuisable sans la partager n'est pazs la posséder comme il se doit...

Bon bah dès que j'aurais un environement de travail digne de ce nom, je posterais ma sources dans la partie php...

sinon, je ne vois pas de quelle source tu parles... Ma source était en js, c'était un gros bloc de fonctions que j'ai aussi réécrits en php pour faire mon site, pour que les liens soient aussi vu par google..

J'ai vu a quoi ta osurce sert, mais le truc c'est que google référenceras mal un site qui présente une frame... (j'en ai une pour la redirection, et ça me fait déja chier...)
cs_olid Messages postés 296 Date d'inscription lundi 2 septembre 2002 Statut Membre Dernière intervention 28 janvier 2008
14 déc. 2004 à 14:10
C'est dommage qun tit coucou si jeune et deja doué perd son temps à croasser à tout vents... :o|

1/ ça ne bloque pas l'accès direct si on enlèvres javascript...

Tu permet que je copie-colle ta remarque à mon nom dans ta source qui propose de créer son menu principal entierement en JS ? ...Pour info, ici c'est un site dédié au Javascript :o))

2/ Sinon en php, le plus simple c'est de mettre le menu sur toutes les pages... comme sur mon site par exemple...

As tu vu que cette source est dédiée aux sites dont le menu est dans un frame séparé ?

3/ en php on peut aussi (si on veut garder les frames) mettre une sécuritée bien plus grande...

Moi et bien d'autres seraient ravis de la connaitre cette technique que je cherche depuis des lustres... Fais moà un post quand tu le publiera, et oublie pô de le breveter !!! :o|
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
13 déc. 2004 à 19:17
ça ne bloque pas l'accès direct si on enlèvres javascript...

Sinon en php, le plus simple c'est de mettre le menu sur toutes les pages... comme sur mon site par exemple...

en php on peut aussi (si on veut garder les frames) mettre une sécuritée bien plus grande...
cs_olid Messages postés 296 Date d'inscription lundi 2 septembre 2002 Statut Membre Dernière intervention 28 janvier 2008
13 déc. 2004 à 17:26
Correction des problemes de mon précédent post + une astuce pour afficher l'entete quand votre page est affichée dans le frame d'un autre site.

Comme j'ai remplacé le window.top par un window.parent, il ne devrait pas avoir de problemes pour les sites qui ont un nom de domaine avec une page (et son frame) de redirection.

Et bien sur, çà marche sous IE, FireFox, et les Mozilla Inside ;op

NB: Merci à ceux qui m'ont aidé sur le forum ; rttb et bultez
cs_olid Messages postés 296 Date d'inscription lundi 2 septembre 2002 Statut Membre Dernière intervention 28 janvier 2008
29 juil. 2004 à 13:11
Jai trouvé un bug ! :o(((

On a une erreur Javascript (autorization refusée) quand la page est ouverte par un frame d'un autre site (nom de domaine different)... Ce qui est trés génant quand on utilise des sous-domaines, ou quon a un nom grace à un domaine virtuel comme ULimit, ou que son domaine est une redirection vers ses pages perso du FAI.

L'origine vient du fait que Javascript n'a pô le droit d'explorer des objets au niveau "window.top" quand celui-ci n'appartient pas au meme domaine (et sous-domaine).

Pour corriger, il faudrait mettre un test préalable pour comparer les domaines... Quelqun a une astuce à proposer ? :o|
cs_olid Messages postés 296 Date d'inscription lundi 2 septembre 2002 Statut Membre Dernière intervention 28 janvier 2008
26 juil. 2004 à 11:12
Heu... Mais si tu n'as pas de frames, cette source te sert à rien, voyon !!! :o.

Ou alors, tu as des frames que sur certaine page ? ...Dans ce cas, fais ton include entre les DIV et utilise cette source que pour ces pages.

Si tu as peur du poid du menu... Cherche pour remplacer les DIV par un IFRAME ; mais cest pô trés propre, et difficile sous Mozilla :o|
sarl_adc Messages postés 141 Date d'inscription lundi 3 novembre 2003 Statut Membre Dernière intervention 20 octobre 2005
23 juil. 2004 à 11:08
En fait je parlais de PHP parce que mon site devait un peu fonctionner comme le tiens (toujours le menu présent, etc...) mais du coup je l'ai fait en PHP parce que j'ai pu intégrer un en-tête dans un entetepage.php, un pied de page dans un piedpage.php et les inclure au début et à la fin de chaque page de mon site.

Le seul inconvénient, c'est que je n'ai pas de frames (utiles parfois).
cs_olid Messages postés 296 Date d'inscription lundi 2 septembre 2002 Statut Membre Dernière intervention 28 janvier 2008
22 juil. 2004 à 19:42
Elle est surtout simple et PROPRE... Jadore :o)

Utile aussi pour faire un site accessible pour les navigayeur special handicap... Tu met dans le NOFRAMES un lien vers l'accueil et grace à lentete contenant ton menu simplifié, zest tout nickel :o)

Heu...Pô oublier les NOEMBED qd ya du flash... Men manque encore sur le site RCE :o(
sarl_adc Messages postés 141 Date d'inscription lundi 3 novembre 2003 Statut Membre Dernière intervention 20 octobre 2005
22 juil. 2004 à 09:18
En fait t'as raison, en PHP c'est pas faisable... Je pensais...

Mais sinon j'ai vu tes liens et c'est vrai que dans l'en-tête tu peux mettre seulement quelques lignes qui rappellent l'en-tête en simplifié. Par contre si tu as beaucoup d'images, ça oblige à les télécharger à nouveau (sauf si elles sont déjà ds le cache).

Mais ton astuce est bonne :)
cs_olid Messages postés 296 Date d'inscription lundi 2 septembre 2002 Statut Membre Dernière intervention 28 janvier 2008
21 juil. 2004 à 19:11
Reformule ta question pour l'include, je te comprend pô :o( ... Il est pô possible en php de savoir si il y a des cadres (avant l'aarivée de la page). Et comme dans ma note finale, met le source tout seul dans un script php puis l'inclue le dans toutes tes pages pour pô avoir à tout changer quand tu fais une modif.

Sinon, l'entete s'affiche dés lors que la page n'est pas dans un cadre... Pour etre plus précis, c'est quand elle est au niveau TOP :o|

Etpis, pour le poid, c'est négligeable... Sauf si tu es un lourdo qui fait un gros menu avec plein d'image. Et encore, çà, çà peut s'arranger en utilisant une feuille de style pour construire l'entete ;o)
sarl_adc Messages postés 141 Date d'inscription lundi 3 novembre 2003 Statut Membre Dernière intervention 20 octobre 2005
21 juil. 2004 à 16:56
Pas mal comme astuce !
Seul inconvénient (si je ne me trompe pas) c'est que tes pages doivent être un petit peu plus lourdes !

Je ne sais pas si je dis une bêtise, mais en PHP on pourrait effectuer un "include" d'une page contenant les en-têtes s'il n'y a pas de cadres. (?)

En tout cas, ton astuce, je la met de côté :)
Rejoignez-nous