Dans une page encadrée à plusieurs fenêtres, l’interaction d’informations entre les sous-fenêtres est courante. Si vous cliquez sur un lien hypertexte dans la fenêtre de navigation, comment ouvrir la page Web liée dans une autre fenêtre ? Si j'appuie sur un bouton dans cette fenêtre, puis-je écrire un message dans une autre fenêtre ? Il y a tellement de fenêtres, comment les identifier ? Veuillez consulter l'exemple ci-dessous.
1. Cliquez sur le lien dans la fenêtre de navigation pour ouvrir la page Web dans une autre fenêtre
La page à une image existante est telle qu'elle est illustrée dans l'image ci-dessus. La fenêtre A est le logo et la publicité du site Web, la fenêtre B est la barre de navigation et la fenêtre C est la fenêtre qui affiche la page. Le code source de cette page encadrée est :
| <framesetrows=20%,*> <framename=topFramescrolling=NOnoresizesrc=toppage.htm> <framesetcols=18%,*> <framename=leftFramenoresizesrc=leftpage.htm> <framename=mainFramesrc=mainpage.htm> </frameset> </frameset> |
S'il est nécessaire que la page liée (test.htm) dans la fenêtre B soit ouverte dans la fenêtre C, alors le lien dans la fenêtre B doit être écrit comme suit : <a herf=test.htm target=mailFrame> La page de ce lien doit être ouvert dans la fenêtre C. </a>, le rôle clé ici est le paramètre target dans la balise <A> Si vous souhaitez ouvrir la page Web dans cette fenêtre, définissez le nom de cette fenêtre dans le paramètre Target.
2. Appuyez sur un bouton dans la fenêtre B et écrivez une ligne de texte dans la fenêtre C.
Le format de page de cet exemple est le même que celui de l'exemple précédent. L'effet final est le suivant : Après avoir appuyé sur le bouton "Écrire dans la fenêtre C" dans la fenêtre B, une ligne de texte "Salut ! Bonjour ! C'est via des mots écrits pour Commande de fenêtre B." Le code de la page encadrée et les fichiers de la page Web dans chaque fenêtre sont les mêmes que dans l'exemple ci-dessus.
Méthode de préparation :
1. Insérez le programme Javascript suivant entre le code source <head> et </head> de la page Web de la fenêtre C (mainpage.htm) :
| <scriptlangage=Javascript> <!-- fonctiontest(){ document.write(Bonjour ! Bonjour ! Ceci est un mot écrit via le contrôle de fenêtre B.) } --> </script> |
La fonction de ce programme est d'écrire un texte dans la fenêtre actuelle.
2. Alors comment appeler le programme de la fenêtre C dans la fenêtre B ? Regardez d'abord le code source du bouton "Ecrire dans la fenêtre C" de la fenêtre B :
| <inputtype=buttonvalue=Écrire dans la fenêtre C onclick=parent.mainFrame.htest()> |
Dans ce code, la clé est le code "parent.mainFrame", qui introduit un nouveau concept - la relation structurelle des fenêtres, c'est-à-dire que dans une page multi-fenêtres, la relation entre les fenêtres est déterminée par quels principes. Le principe pour déterminer la relation entre les fenêtres est le suivant : la fenêtre divisée de la fenêtre courante est la « fenêtre enfant » (enfants) de la fenêtre courante, puis la fenêtre courante est la « fenêtre parent » (parent) de la fenêtre divisée. Par exemple, la relation entre les fenêtres dans cet exemple est la suivante :
Comme le montre le tableau ci-dessus, la « fenêtre du navigateur » est la « fenêtre parent » de « topFrame » et « fenêtre inférieure », et la fenêtre inférieure est la « fenêtre parent » des deux fenêtres « leftFrame » et « mainFrame ». ". La connexion entre les deux fenêtres doit se faire via leurs fenêtres parents, donc dans cet exemple pour appeler "htest()" sur la page web dans la fenêtre C, cela se fait évidemment via les parents de C et B puis vers le mainFrame, et puis appelez le programme htest().
Donc, si le code pour écrire du texte de la fenêtre C dans la fenêtre B est comme ceci : onclick=parent.leftFrame.htest(); alors, savez-vous comment écrire le code pour écrire un morceau de texte de la fenêtre A dans la fenêtre C ? Au fait, c'est tout : onclick=grandchildren.mainFrame.htest().
Comme le montre l'exemple ci-dessus, le problème clé dans l'échange d'informations entre fenêtres est de comprendre la relation entre les fenêtres, et les autres opérations sont relativement simples.