Alternative conviviale aux redirections si frames absents (v.2)

Contenu du snippet

Quand un site a des "frames", on s'inquiète des accés direct vers les pages des sous-cadres... C'est inévitable car les moteurs de recherche indexent toutes les pages (si bien référencé). Mais c'est pénalisant qu'une page ne soit plus accompagnée du menu et autres infos légales (nécessaires pour les sociétés).

La première démarche, c'est de mieux référencer sa page "index" en utilisant la balise "noframes" et autres astuces pour cacher du texte (pertinent) et/ou des liens vers les sous-pages... Mais SANS utiliser de Javascript ;op

QUELQUES WEBMASTERS FONT DES JAVASCRIPTS DE REDIRECTION pour renvoyer les accés directs aux sous-pages vers l'index... Mais les internautes détestent çà car ils doivent chercher (parfois longuement) pour retrouver leurs pages avec les infos qui les interressent :o(

ENCORE PIRE, certains bloquent le clic-droit pour emêcher d'ouvrir la page séparemment dans une nouvelle fenetre :o((

UNE ALTERNATIVE ET UN BON COMPROMIS POUR TOUS (webmaster et internautes)
Exemples sur ces sites :
www.rce-sa.com
www.netchallenge.fr (pour les actus)

Mes pages secondaires contiennent toutes un en-tête et un pied de page qui contienne un résumé du menu principal et/ou des mentions légales. Ils sont tous les 2 entre des balises DIV qui sont cachés par défaut (via le style "display: none")

Ensuite, un petit (et trés simple) javascript (compatible MSIE et Mozilla) cherche si la page est affichée dans des cadres... Dans le cas contraire, le JS va rendre l'entete et le pied de page visible :o)

NB: Mon JS a un petit défaut ; il affiche pas l'entete si la page est affichée dans le cadre dans un autre site... Il suffirait d'ajouter un deuxieme test pour détecter la présence de l'un de vos cadre principal ;op

EDIT: Le probléme ci-dessus est corrigé par la deuxieme version :o)

Source / Exemple :


<DIV id="EntetePageSeule" style="margin: 2px; width: 100%; overflow: hidden; margin-bottom: 5px; display: none" class="EntetePageSeule">
VOTRE ENTETE ICI
</DIV>
<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>

Conclusion :


Conseil:
Utilisez les includes du php pour insérer vos entetes ;o)

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.