您好,登錄后才能下訂單哦!
javascript中怎么調用父窗口的方法,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細講解,有這方面需求的人可以來學習下,希望你能有所收獲。
javascript調用父窗口的方法:1、使用“window.parent”語句,可在iframe頁面調用父頁面對象;2、使用“window.opener”語句,可在“window.open”打開的子頁面中調用父頁面對象。
javascript調用父窗口(父頁面)的方法有哪些
1、window.parent 是iframe頁面調用父頁面對象
舉例:
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>
如果我們需要在b.htm中要對a.htm中的username文本框賦值,就如很多上傳功能,上傳功能頁在Ifrmae中,上傳成功后把上傳后的路徑放入父頁面的文本框中
我們應該在b.html中寫
<script type="text/javascript"> var _parentWin = window.parent ; _parentWin.form1.username.value = "xxxx" ; </script>
源碼:
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 = 'parentInvokeIFrame()'/> </form> <iframe src="b.html" width = '100%' id = 'iframeTest'></iframe> </body> </html>
b.html
<html> <head> <title></title> <script type="text/javascript"> /** 為測試父窗體調用IFrame子窗體的全局函數(shù)而添加的子窗口全局函數(shù) */ var iFrameVair = "測試父窗體調用IFrame子窗體的全局函數(shù)"; 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:不能跨域獲取,例如iframe的src是'http://www.xxx.ccc/'就不可以
2、window.opener 是window.open 打開的子頁面調用父頁面對象
源碼:
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('b.html', 'newwindow', 'height=1024, width=1300, top=0, left=0, toolbar=no, menubar=yes, scrollbars=yes,resizable=yes,location=no, status=no'); } 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子窗體的全局函數(shù)而添加的子窗口全局函數(shù) */ var iFrameVair = "測試父窗體調用IFrame子窗體的全局函數(shù)"; 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>
看完上述內容是否對您有幫助呢?如果還想對相關知識有進一步的了解或閱讀更多相關文章,請關注億速云行業(yè)資訊頻道,感謝您對億速云的支持。
免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經查實,將立刻刪除涉嫌侵權內容。