ก.html
<ชื่อแบบฟอร์ม = "form1" method = "โพสต์" การกระทำ = "">
<a href="javascript:void(null)" class="add" onClick="open('b.html','','resizable=1,scrollbars=1,status=no,toolbar=no,menu= no,width=500,height=400,left=150,top=50')">เพิ่มขึ้น</a>
<ประเภทอินพุต = "ข้อความ" ชื่อ = "text1">
</แบบฟอร์ม>
ข.html
<script language="Javascript" type="text/javascript">
ฟังก์ชั่น returnValue()
-
window.opener.document.all.text1.value=document.getElementById("returnText").value;
หน้าต่าง.ปิด();
-
</สคริปต์>
<input type="button" name="ส่ง" value="ส่ง" onclick="returnValue();">
<input name="returnText" type="text" id="returnText">
</p>
ภาคผนวก: การใช้ window.opener
ในการใช้งานทั่วไป window.opener ใช้เพื่อแก้ปัญหาการไม่แสดงหน้าต่างป็อปอัปเมื่อปิดหน้าต่างเท่านั้น และโดยทั่วไปจะมีความเข้าใจน้อยลงเกี่ยวกับความเข้าใจที่ลึกซึ้งยิ่งขึ้น อันที่จริง window.opener หมายถึงหน้าต่างที่เรียกเมธอด window.open
ส่วนใหญ่จะใช้เพื่อแก้ไขการส่งงานบางส่วนในที่ทำงาน การดำเนินการข้ามเพจประเภทนี้มีประโยชน์มากสำหรับการทำงาน
หากคุณเปิดเพจในหน้าต่างหลักและต้องการให้หน้าต่างหลักรีเฟรช ให้ใช้สิ่งนี้ window.opener ที่เปิดเพจนั้นเทียบเท่ากับหน้าต่างของหน้าต่างหลัก
หากต้องการรีเฟรชหน้าต่างหลักที่คุณสามารถใช้ได้
window.opener.location.reload();
หากคุณใช้ไดเร็กทอรีเสมือน: เช่น struts *.do จะแจ้งให้คุณลองอีกครั้ง คุณสามารถเปลี่ยนเป็น window.opener.yourformname.submit()
นั่นจะไม่เป็นไร
2〉
มีสถานการณ์ในการสมัคร
เปิดหน้าต่าง B ในหน้าต่าง A ปิดหน้าต่าง B หลังจากเสร็จสิ้นการดำเนินการในหน้าต่าง B และรีเฟรชหน้าต่าง A โดยอัตโนมัติในเวลาเดียวกัน
ฟังก์ชั่น closeWin(){
hasClosed = จริง;
window.opener.location="javascript:reloadPage();";
หน้าต่าง.ปิด();
-
ฟังก์ชั่น window.onbeforeunload(){
ถ้า(!ปิดแล้ว){
window.opener.location="javascript:reloadPage();";
-
-
</สคริปต์>
โค้ดด้านบนจะแจ้งข้อผิดพลาดเมื่อปิดหน้าต่าง B โดยแจ้งว่า Object หายไป รหัสที่ถูกต้องมีดังนี้:
ฟังก์ชั่น closeWin(){
hasClosed = จริง;
window.opener.location="javascript:reloadPage();";
window.opener=null;
หน้าต่าง.ปิด();
-
ฟังก์ชั่น window.onbeforeunload(){
if(!hasClosed){//หากมีการดำเนินการเมธอด closeWin เมธอดนี้จะไม่ถูกดำเนินการ
window.opener.location="javascript:reloadPage();";
-
-
</สคริปต์>
วิธีการ reloadPage เป็นดังนี้:
ฟังก์ชัน reloadPage() {
ประวัติศาสตร์ไป(0);
document.execCommand("รีเฟรช")
document.location = เอกสาร.location;
document.location.reload();
-
PS: เนื่องจากเราจำเป็นต้องรองรับการปิดแบบปกติและการบังคับปิดหน้าต่างเพื่อบันทึกเหตุการณ์ เราจึงใช้ตัวแปรโกลบอล hasClosed
-
นอกจากนี้ เมื่อหน้าต่างหลักเป็นเฟรม ปัญหาอาจเกิดขึ้นเมื่อรีเฟรชหน้าต่างหลัก:
ไม่สามารถรีเฟรชเพจโดยไม่ส่งข้อมูลอีกครั้ง
ภายหลังได้แก้ไขดังนี้
window.opener.parent.document.frames.item('mainFrame').location.href = window.opener.location.href;
ไม่จำเป็นต้องดำเนินการเมธอด reload() ในตัว ระวังอย่าเพิ่มประโยคนี้มากเกินไป:
window.opener.parent.document.frames.item('mainFrame').location.reload();
================================================== ======================================
สุดท้ายนี้ เพื่อรองรับการรีเฟรชหน้าต่างหลักปกติและหน้าต่างหลักของเฟรมพร้อมกัน รหัสจึงเป็นดังนี้:
ฟังก์ชั่น closeWin() {
hasClosed = จริง;
<%if(null != frame){%>
window.opener.parent.document.frames.item('mainFrame').location.href = window.opener.location.href;
<%}อื่น ๆ{%>
window.opener.location = "javascript:reloadPage();";
-
//window.opener.top.mainFrame.location="javascript:reloadPage();";
//self.opener.frames.mainFrame.location.reload(จริง);
window.opener = null;
หน้าต่าง.ปิด();
-
ฟังก์ชั่น window.onbeforeunload(){
ถ้า (!ปิดแล้ว) {
<%if(null != frame){%>
window.opener.parent.document.frames.item('mainFrame').location.href = window.opener.location.href;
<%}อื่น ๆ{%>
window.opener.location = "javascript:reloadPage();";
-
window.opener = null;
-
-
การใช้งาน window.opener
window.opener ส่งคืนการอ้างอิงไปยังหน้าต่างที่สร้างหน้าต่างปัจจุบัน ตัวอย่างเช่น หากคุณคลิกลิงก์บน a.htm เพื่อเปิด b.htm เราก็วางแผนที่จะป้อนค่าบน b.htm และกำหนดให้กับ a htm ในกล่องข้อความที่มีรหัสเป็น "ชื่อ" สามารถเขียนได้เป็น:
window.opener.document.getElementById("name").value = "ป้อนข้อมูล";
ไม่มีความเข้าใจที่ดีเกี่ยวกับ window.opener ใน javascript
เหตุใดจึงไม่สามารถใช้ในเฟรมได้ เหตุใดหน้าต่างหลักของหน้าต่างป๊อปอัปจึงไม่สามารถอยู่ในเพจภายในเฟรมได้ แล้วจะใช้งานหน้าต่างหลักในเฟรมผ่านหน้าต่างป๊อปอัปได้อย่างไร?
opener.parent.frames['frameName'].document.all.input1.value ลองสิ่งนี้ :)
หากคุณต้องการเปลี่ยนเพจในเฟรมเป็นเพจอื่นในเฟรมเดียวกันหรือเพจในเฟรมพาเรนต์ ให้ใช้พาเรนต์
window.opener หมายถึงเพจหลักของเพจที่เปิดโดย window.open
ออบเจ็กต์ window.frames สามารถอ้างอิงเพจใน iframe หรือเพจในเฟรมเซ็ต
ซึ่งสามารถทำได้
window.frames[0].document.getElementById('xx');
ซึ่งสามารถทำได้
window.frames[0].document.body.innerHTML;
frm = window.parent.window.frames['uploadFrame'];
frmDocument = frm.document;
frm.sb(3); //sb เป็นฟังก์ชันในหน้า uploadFrame
สำหรับไฟร์ฟอกซ์
หากคุณพบข้อผิดพลาด: parent.document.frames ไม่มี PRperties
เพียงแทนที่ด้วยโค้ดต่อไปนี้ รหัสนี้เข้ากันได้กับ IE และ ff frm = window.parent.window.frames['uploadFrame'];
โปรดทราบว่ามีข้อจำกัดในการแก้ไขเพจในเฟรมในลักษณะนี้ กล่าวคือ ต้องอยู่ภายใต้โดเมนเดียวกัน ไม่เช่นนั้นจะไม่สามารถเข้าถึงได้ หากอยู่ภายใต้โดเมนเดียวกัน แต่ชื่อโดเมนย่อยต่างกันให้เพิ่ม ประโยคของไฟล์ js และ html ที่เกี่ยวข้อง
document.domain = xxx.com [กรอกชื่อโดเมนของคุณที่นี่]
document.getElementById('iframeid').contentWindow.document.getElementById('someelementid');
ถาม:
ในหน้าต่างหลัก window.open() หน้าต่างลูก และกำหนดตัวแปร i
ป้อนค่า j ในหน้าต่างย่อยแล้ว window.opener.i=j;
สิ่งนี้สามารถส่งต่อได้ แต่ฉันเพิ่ม window.close(); ที่ส่วนท้ายของหน้าต่างย่อยและไม่สามารถส่งค่าได้
โปรดบอกฉันว่ามีวิธีแก้ปัญหานี้หรือไม่ ให้ฉันส่งผ่านค่าก่อนที่จะปิดหน้าต่างลูก
รหัสมีดังนี้:
หน้าต่างหลัก: parent.jsp
<สคริปต์>
วาร์ฉัน;
window.open('<%=contextPath%>/usermanage/newscontrol/cd.jsp);
</สคริปต์>
<input type="button" onclick="alert(i)">
หน้าต่างย่อย:cd.jsp
<สคริปต์>
ฟังก์ชั่นย่อย () {
window.opener.i=5;
หน้าต่าง.ปิด();
-
</สคริปต์>
<input type="button" onclick="subm()">
คำตอบที่ดีที่สุดที่คุณสามารถใส่ไว้ในหน้าต่างหลัก
<input id="fromChild" type="hidden" />
<ประเภทอินพุต = "ปุ่ม"
onclick="alert(document.getElementById('fromChild').value)">
ในหน้าต่างย่อย:
ฟังก์ชั่นย่อย () {
window.opener.document.getElementById('fromChild').value=5;
หน้าต่าง.ปิด();
-
ซึ่งสามารถทำได้
<หัว>
<ภาษาสคริปต์=จาวาสคริปต์>
หน้าต่างฟังก์ชั่นปิด()
{ window.opener=null;
หน้าต่าง.ปิด();
-
</สคริปต์>
</หัว>
<ร่างกาย>
<input id="Button1" type="button" value="button" onclick="windowclose()" />
</ร่างกาย>
-