Les cadres sont utilisés pour stocker des sous-pages, soit des iframes ou des cadres. L'objet Window est un objet global, et toutes les fonctions et objets de la page sont dans sa portée.
1. Le parent représente la fenêtre parent. S'il y a plusieurs couches de nidification dans la fenêtre parent, le dessus représente la fenêtre parent de niveau supérieur.
L'auto représente la fenêtre elle-même.
if (self == top) {//} déterminez simplement si la fenêtre est au niveau supérieur if (self == parent) {} //2.1. La page parent accède aux éléments de la page enfant. L'idée est que tous les éléments de la sous-page sont dans son objet Window.Document, obtenez-le d'abord, puis il est facile à dire.
Il est préférable de définir l'attribut de nom pour le cadre, qui est l'opération la plus pratique. comme
<iframe name = "test" src = "child.html"> </ iframe>
Si vous souhaitez obtenir l'élément avec ID «menu» dans child.html, vous pouvez l'écrire comme ceci:
window.frames ["test"]. document.getElementById ('menu'); // Étant donné que toutes les fonctions sont stockées dans l'objet Window, la fenêtre de début peut être supprimée: cadres ["test"]. Document.getElementById ('menu'); // Dans le navigateur, l'attribut de nom de la trame est équivalent à l'objet de fenêtre de la sous-page par défaut, il peut donc être abrégé: test.document.getElementById ('menu');2.2 La page parent accède aux fonctions ou objets de la page enfant. Les fonctions et les objets de la sous-page sont dans leurs objets de fenêtre, comme ci-dessus, la clé est d'obtenir l'objet.
// Si Child.html définit la fonction ShowMesg et doit être appelé dans le parent, alors écrivez Window.frames ['test']. ShowMesg (); // forme abrégé test.showMesg (); // De même, l'objet accède également à l'alerte (test.person);
2.3 Autres moyens d'obtenir des documents.
Utilisez d'abord 'document.getElementById ()' ou 'document.getElementsByTagName ()' pour obtenir le cadre en tant qu'élément sous le document, puis accéder à son attribut ContentDocument / ContentWindow (iframe, spécifique au trame), le premier est pris en charge IE7-NOT, et le second n'est pas pris en charge.
<iframe id = "testid" src = "child.html"> </ iframe> // ====== var doc = document.getElementById ('testid'); // ou var doc = document.getElementsByTagName ('iframe') [0]; Alors var winordoc = doc.contentDocument || doc.contentwindow; // Choisissez l'un des deux if (winordoc.document) winordoc = winordoc.Document; winordoc.getElementById ('menu'); // Si vous avez besoin d'un objet Window, écrivez-le comme ceci: if (winordoc.defaultView) winordoc = winordoc.defaultView;3.1 Page enfant accède aux éléments de la page parent. La même idée que 2.1, obtenez d'abord la fenêtre de la fenêtre parent.
parent.window.document.getElementById («parentMenu»); // abréviation parent.Document.getElementById («parentMenu»);
3.2. La page enfant accède à la fonction ou à l'objet de la page parent. La même idée que 2.2, obtenez d'abord l'objet de fenêtre de la fenêtre parent.
parent.parentFunction ();
Enfin, mentionnons la même stratégie d'origine de JS, c'est-à-dire que le code JS situé sur le site Web A n'autorise pas l'accès au contenu situé sur le site B, même si le code provient du site Web B. Si le cadre est une page d'autres sites Web, puis lorsque l'accès entre les autres conformément à la méthode ci-dessus, le navigateur doit inviter: `` pas de permission '' Erreur.