SELFHTML/Aides à la navigation JavaScript/DOM Exemples d'application |
Empêcher l'aperçu de vos pages dans des cadres | |
Si vous établissez vos propres pages WWW, vous ne voudrez certainement pas que votre splendide ouvrage soit affiché dans une petite fenêtre d'une page étrangère. Ceci est pourtant possible sans difficulté à l'aide de cadres, et il existe quelques projets guide du Web qui sont assez impudents pour afficher des projets étrangers comme dans une "vitrine" dans leurs propres projets. Lisez aussi à ce sujet la partie sur les effets de vitrine déloyaux .
Avec un petit JavaScript, vous pouvez imposer que vos propres pages, lorsqu'elles sont appelées, occupent dans tous les cas la totalité de la fenêtre du navigateur. Le script impose l'affichage en plein écran du fichier HTML si une autre page essaie de charger le fichier dans une fenêtre cadre. Le script n'a aucun effet sur des liens ou appels "normaux" du fichier.
L'exemple montre le fichier qui doit empêcher le chargement dans un jeu de cadres. Les fichiers qui, dans l'exemple d'affichage font partie du jeu de cadres, sont sans importance pour la compréhension.
<html> <head> <title>Empêcher l'aperçu de vos pages dans des cadres</title> <script type="text/javascript"> <!-- if(top!=self) top.location=self.location; //--> </script> </head> <body bgcolor="#FFFFFF" text="#000000" link="#AA5522" vlink="#772200" alink="#000000"> <h1>Aucune chance pour les détenteurs de vitrine!</h1> </body> </html> |
Le petit JavaScript de l'exemple doit se trouver dans l'entête de chaque fichier HTML que vous ne désirez pas voir apparaître dans des cadres étrangers. . Le script est exécuté automatiquement au chargement du fichier, étant donné que le code n'est pas lié à une fonction. Dans le code - il ne comprend qu'une seule instruction conditionnelle - il est demandé avec top!=self
, si, la référence du niveau le plus élevé correspond au propre niveau. Si self
, donc la fenêtre elle-même est également la fenêtre du niveau le plus élevé (top
), alors tout va bien et l'instruction qui dépend de la condition n'est pas exécutée. Si par contre self
n'est pas la même que top
, cela signifie que des cadres sont affichés. Dans ce cas, l'instruction top.location=self.location
est exécutée. Avec cette instruction, vous imposez que le fichier actuel soit affiché dans tous les cas dans la totalité de la fenêtre d'affichage du navigateur.
Avec Opera 5.12 vous ne pouvez pas accéder au niveau de fenêtre le plus élevé si celle-ci ne fait pas partie de votre propre domaine. Vous pouvez cependant faire en sorte, par un détour, que ce navigateur ferme le jeu de cadres. Pour cela, vous devez faire en sorte qu'un lien avec la propriété target="_top"
soit cliqué.
<html> <head> <title>Empêcher l'aperçu de vos pages dans des cadres</title> <script type="text/javascript"> <!-- if(top!=self) { if (window.opera) window.onload=liberer_opera; else top.location=self.location; } function liberer_opera() { document.links['liberer'].click(); } //--> </script> </head> <body bgcolor="#FFFFFF" text="#000000" link="#AA5522" vlink="#772200" alink="#000000"> <a name="liberer" href="affichage_page_opera.htm" target="_top"></a> <h1>Aucune chance pour les détenteurs de vitrine!</h1> </body> </html> |
Dans cette page se trouve un lien invisible (lien sans texte de lien) nommé liberer
. Ce lien a pour fenêtre cible _top
et comme cible du lien la page elle-même. S'il est établi au chargement de la page que celle-ci se trouve dans un jeu de cadres étranger, alors tous les navigateurs excepté Opera, utilisent le script décrit en haut. Dans Opera par contre, le gestionnaire d'événement
onload est initialisé. L'appel de window.onload=liberer_opera
a pour mission d'appeler, après le chargement de la page, la fonction liberer_opera()
. Dans cette fonction, il ne se passe rien d'autre que cliquer sur le lien grâce à la méthode click()
. Cette méthode non documentée fonctionne avec tous les réglages d'identification d'Opera. La cible du lien se charge dans la fenêtre du niveau le plus élevé et ferme le jeu de cadres.
Calculatrice | |
Changer simultanément deux cadres | |
SELFHTML/Aides à la navigation JavaScript/DOM Exemples d'application |
© 2001 Stefan Münz / © 2003 Traduction Serge François, 13405@free.fr
selfhtml@fr.selfhtml.org