Los marcos se utilizan para almacenar subpagas, ya sea iframes o marcos. El objeto de la ventana es un objeto global, y todas las funciones y objetos en la página están en su alcance.
1. El padre representa la ventana principal. Si hay varias capas de anidación en la ventana principal, la parte superior representa la ventana de los padres de nivel superior.
El yo representa la ventana en sí.
if (self == top) {//} Simplemente determine si la ventana está en el nivel superior if (self == parent) {} //2.1. La página principal accede a los elementos de la página infantil. La idea es que todos los elementos de la subpaga están en su ventana. Objeto Document, solo consígalo primero y luego es fácil de decir.
Es mejor establecer el atributo de nombre para el marco, que es la operación más conveniente. como
<iframe name = "test" src = "child.html"> </iframe>
Si desea obtener el elemento con 'menú' de identificación en child.html, puede escribirlo así:
Window.frames ["Test"]. Document.getElementById ('menú'); // Dado que todas las funciones se almacenan en el objeto de la ventana, se puede eliminar la ventana inicial: Frames ["Test"]. Document.getElementById ('menú'); // En el navegador, el atributo de nombre del marco es equivalente al objeto de la ventana de la subpaga de forma predeterminada, por lo que puede abreviarse más: test.document.getElementById ('menú');2.2 La página principal accede a las funciones u objetos de la página infantil. Las funciones y objetos de la subpaga están en sus objetos de ventana, lo mismo que arriba, la clave es obtener el objeto.
// Si child.html define la función showmesg y debe llamarse en el padre, luego escriba window.frames ['test']. ShowMesg (); // formulario abreviado test.showmesg (); // Del mismo modo, el objeto también accede a alerta (Test.person);
2.3 Otras formas de obtener documentos.
Primero use 'document.getElementById ()' o 'document.getElementsBytagName ()' para obtener el marco como elemento en el documento, y luego acceder a su atributo ContentDocument/ContentWindow (iframe, específico de marco), el primero no es compatible con IE7, y el segundo no es compatible.
<iframe id = "testId" src = "child.html"> </iframe> // ====== var doc = document.getElementById ('testId'); // o var doc = document.getElementsByTagName ('iframe') [0]; Luego var winordoc = doc.contentDocument || doc.contentwindow; // elige uno de los dos if (winordoc.document) winordoc = winordoc.document; winordoc.getElementById ('menú'); // Si necesita un objeto de ventana, escríbelo así: if (winordoc.defaultview) winordoc = winordoc.defaultView;3.1 Página infantil Accede a los elementos de la página principal. La misma idea que 2.1, primero obtenga la ventana principal de la ventana.
parent.window.document.getElementById ('ParentMenu'); // abreviatura parent.document.getElementById ('parentmenu');3.2. La página del niño accede a la función u objeto de la página principal. La misma idea que 2.2, primero obtenga el objeto de la ventana principal.
parent.parentFunction ();
Finalmente, mencionemos la misma estrategia de origen de JS, es decir, el código JS ubicado en el sitio web A no permite el acceso al contenido ubicado en el sitio web B, incluso si el código se origina en el sitio web B. Si el marco es una página de otros sitios web, al acceder entre sí de acuerdo con el método anterior, el navegador debe solicitar: 'sin permiso'.