En una página enmarcada con múltiples ventanas, la interacción de información entre subventanas es común. Si hace clic en un hipervínculo en la ventana de navegación, ¿cómo abre la página web vinculada en otra ventana? Si presiono un botón en esta ventana, ¿puedo escribir un mensaje en otra ventana? Hay tantas ventanas, ¿cómo identificarlas? Consulte el ejemplo a continuación.
1. Haga clic en el enlace en la ventana de navegación para abrir la página web en otra ventana.
La página de un marco existente es como se muestra en la imagen de arriba. La ventana A es el logotipo y el anuncio del sitio web, la ventana B es la barra de navegación y la ventana C es la ventana que muestra la página. El código fuente de esta página enmarcada es:
| <conjunto de marcos=20%,*> <nombre de marco=topFramescrolling=NOnoresizesrc=toppage.htm> <framesetcols=18%,*> <framename=leftFramenoresizesrc=leftpage.htm> <nombre de marco=mainFramesrc=página principal.htm> </conjunto de marcos> </conjunto de marcos> |
Si es necesario abrir la página de enlace (test.htm) en la ventana B en la ventana C, entonces el enlace en la ventana B debe escribirse de la siguiente manera: <a herf=test.htm target=mailFrame> La página de este enlace debe se abrirá en la ventana C. </a>, la función clave aquí es el parámetro de destino en la etiqueta <A>. Si desea abrir la página web en esa ventana, establezca el nombre de esa ventana en el parámetro de destino.
2. Presione un botón en la ventana B y escriba una línea de texto en la ventana C.
El formato de página de este ejemplo es el mismo que el del ejemplo anterior. El efecto final es el siguiente: después de presionar el botón "Escribir en la ventana C" en la ventana B, aparece una línea de texto "¡Hola! ¡Hola! Esto es a través de palabras escritas para". Control de ventana B." El código para la página enmarcada y los archivos de la página web en cada ventana son los mismos que en el ejemplo anterior.
Método de preparación:
1. Inserte el siguiente programa Javascript entre el código fuente <head> y </head> de la página web de la ventana C (mainpage.htm):
| <scriptlanguage=Javascript> <!-- prueba de función(){ document.write (¡Hola! ¡Hola! Esta es una palabra escrita a través del control de la ventana B). } --> </script> |
La función de este programa es escribir un texto en la ventana actual.
2. Entonces, ¿cómo llamar al programa en la ventana C en la ventana B? Primero mire el código fuente del botón "Escribir en la ventana C" en la ventana B:
| <inputtype=buttonvalue=Escribir en ventana C onclick=parent.mainFrame.htest()> |
En este código, la clave es el código "parent.mainFrame", que introduce un nuevo concepto: la relación estructural de la ventana, es decir, en una página de múltiples ventanas, la relación entre ventanas está determinada por qué principios. El principio para determinar la relación de la ventana es: la ventana dividida de la ventana actual es la "ventana secundaria" (hijos) de la ventana actual, luego la ventana actual es la "ventana principal" (principal) de la ventana dividida. Por ejemplo, la relación entre las ventanas en este ejemplo es la siguiente:
Como se puede ver en la tabla anterior, la "ventana del navegador" es la "ventana principal" de "topFrame" y la "ventana inferior", y la ventana inferior es la "ventana principal" de las dos ventanas "leftFrame" y "mainFrame". ". La conexión entre las dos ventanas debe ser a través de sus ventanas principales, por lo que en este ejemplo, para llamar a "htest()" en la página web en la ventana C, obviamente es a través de las ventanas principales de C y B y luego al mainFrame, y luego llame al programa htest().
Entonces, si el código para escribir texto desde la ventana C a la ventana B es así: onclick=parent.leftFrame.htest() entonces, ¿sabe cómo escribir el código para escribir un fragmento de texto desde la ventana A a la ventana C? ? Por cierto, eso es todo: onclick=grandchildren.mainFrame.htest().
Como se puede ver en el ejemplo anterior, la cuestión clave al intercambiar información entre ventanas es comprender la relación entre ventanas, y otras operaciones son relativamente simples.