Maison >interface Web >Questions et réponses frontales >Quelles sont les méthodes pour appeler la fenêtre parent en javascript ?

Quelles sont les méthodes pour appeler la fenêtre parent en javascript ?

青灯夜游
青灯夜游original
2021-06-23 15:13:483290parcourir

Comment appeler la fenêtre parent à l'aide de JavaScript : 1. Utilisez l'instruction "window.parent" pour appeler l'objet de page parent dans la page iframe ; 2. Utilisez l'instruction "window.opener" pour l'ouvrir dans "window.open" Appelez l'objet de page parent dans la page enfant.

Quelles sont les méthodes pour appeler la fenêtre parent en javascript ?

L'environnement d'exploitation de ce tutoriel : système Windows 7, JavaScript version 1.8.5, ordinateur Dell G3.

Quelles sont les méthodes permettant à JavaScript d'appeler la fenêtre parent (page parent)

1. Page iframe qui appelle la page parent. Objet

Exemple :

a.html

<html>  
    <head><title>父页面</title></head>  
<body>  
    <form name="form1" id="form1">  
         <input type="text" name="username" id="username"/>  
    </form>  
    <iframe src="b.html" width=100%></iframe>  
</body>  
</html>

Si nous devons attribuer une valeur à la zone de texte du nom d'utilisateur dans un .htm dans b.htm, comme Il existe de nombreuses fonctions de téléchargement. La page de fonction de téléchargement est dans Ifrmae. Une fois le téléchargement réussi, placez le chemin de téléchargement dans la zone de texte de la page parent
Nous devrions écrire

<script type="text/javascript">  
    var _parentWin = window.parent ;  
    _parentWin.form1.username.value = "xxxx" ;  
</script>
.

en b.html Code source :

a.html

<html>  
<head>  
    <title>主页面</title>  
    <script>  
        /** 为测试IFrame子窗口调用父窗口的全局变量而添加的测试变量 */  
        var parentVairous = "为测试IFrame子窗口调用父窗口的全局变量而添加的测试变量";  
        function parentInvokeIFrame()  
        {  
                var iframeTest = document.frames["iframeTest"]; //使用document.getElementById("iframeTest");同样可以  
                alert(iframeTest.document.body.innerHTML);  
                alert(iframeTest.iFrameVair);  
        }  
    </script>  
</head>  
<body>  
<form name="form1" id="form1">  
    <input type="text" name="username" id="username"/>  
    <input type = "button" value = "父窗口调用IFrame子窗口中的内容" onclick = &#39;parentInvokeIFrame()&#39;/>  
</form>  
<iframe src="b.html" width = &#39;100%&#39; id = &#39;iframeTest&#39;></iframe>  
</body>  
</html>

b.html

<html>  
     <head>  
         <title></title>  
         <script type="text/javascript">  
            /** 为测试父窗体调用IFrame子窗体的全局函数而添加的子窗口全局函数 */  
         var iFrameVair = "测试父窗体调用IFrame子窗体的全局函数";  
           
         function UpdateParent()  
         {  
             var _parentWin = window.parent ;  
             _parentWin.form1.username.value = "xxxx" ;  
         }  
           
         function childInvokeParent()  
         {  
                var parentVairous = window.parent.window.parentVairous;  
                alert(parentVairous);     
         }  
       </script>  
    </head>  
<body>  
     <form name="form1" id="form1">  
         <p>  </p>  
         <p align="center">  
            <input type = "button"   
                   name = "button"   
                   id = "button"   
                   value = "更新主页面的UserName内容"   
                   onclick = "UpdateParent()">  
            <input type = "button"  
                         name = "button2"  
                         id = "button2"  
                         value = "测试IFrame子窗口调用父窗口的全局变量"  
                         onclick = "childInvokeParent();"/>  
         </p>  
         <p>  </p>  
     </form>  
</body>  
</html>

ps : ne peut pas être obtenu sur tous les domaines, par exemple, le src de l'iframe est 'http://www .xxx.ccc/' n'est pas autorisé

2. window.opener est la page enfant ouverte par window .open et appelle l'objet de la page parent

Code source :

a.html

<html>  
<head>  
     <title>主页面</title>  
     <script type="text/javascript">  
     /** 为测试IFrame子窗口调用父窗口的全局变量而添加的测试变量 */    
     var parentVairous = "为测试IFrame子窗口调用父窗口的全局变量而添加的测试变量";   
       
     /**   
      *  因为不同于IFrame(IFrame有id,window.open()与IFrame的父子窗口的模式不同),  
      *  所以当是通过window.open()方法打开一个新窗口使, 必须有一个新窗口的对象   
      *  当然必须先让子窗口弹出来, 才能调用子窗口中的变量, 否则抛出异常  
      */  
     var OpenWindow;  
       
     function openSubWin()  
     {  
         OpenWindow = window.open(&#39;b.html&#39;, &#39;newwindow&#39;, &#39;height=1024, width=1300, top=0, left=0, toolbar=no, menubar=yes, scrollbars=yes,resizable=yes,location=no, status=no&#39;);  
     }  
     function parentInvokeChild()    
     {    
         if(OpenWindow)//当然必须先让子窗口弹出来, 才能调用子窗口中的变量, 否则抛出异常           
         {  
               alert(OpenWindow.iFrameVair);  
         }  
     }   
     </script>  
</head>  
<body>  
    <form name="form1" id="form1">  
        <input type="text" name="username" id="username"/>  
        <input type="button" value="弹出子页面" onclick = "openSubWin()">  
        <input type="button" value="测试调用弹出窗口中的全局变量" onclick = "parentInvokeChild()">  
    </form>  
</body>  
</html>

b.html

<html>  
    <head>  
        <title>子页面</title>  
        <script type="text/javascript">  
         /** 为测试父窗体调用IFrame子窗体的全局函数而添加的子窗口全局函数 */    
         var iFrameVair = "测试父窗体调用IFrame子窗体的全局函数";  
         function UpdateParent()  
         {  
              var _parentWin = window.opener;  
              _parentWin.form1.username.value = "xxxx" ;  
         }  
         function childInvokeParent()    
         {    
              var parentVairous = window.opener.window.parentVairous;    
              alert(parentVairous);       
         }  
        </script>  
    </head>  
<body>  
<form name="form1" id="form1">  
<p>  </p>  
<p align="center">  
    <input type="button"   
               onclick = "UpdateParent();"   
               name="button"   
               id="button"   
               value="更新主页面的UserName内容">  
    <input type = "button"    
           name = "button2"    
           id = "button2"    
           value = "测试IFrame子窗口调用父窗口的全局变量"    
           onclick = "childInvokeParent();"/>    
</p>  
<p>  </p>  
</form>  
</body>

[ Recommandations associées : Tutoriel d'apprentissage Javascript]

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn