a.html
<اسم النموذج = "form1" طريقة = "نشر" الإجراء = "">
<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>
<نوع الإدخال = "نص" اسم = "نص 1">
</النموذج>
ب.أتش تي أم أل
<script language="Javascript" type="text/javascript">
قيمة إرجاع الدالة ()
{
window.opener.document.all.text1.value=document.getElementById("returnText").value;
window.Close();
}
</script>
<نوع الإدخال = "زر" اسم = "إرسال" القيمة = "إرسال" عند النقر = "returnValue ()؛">
<اسم الإدخال = "returnText" type = "text" id = "returnText">
</ص>
الملحق: استخدام 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 تلقائيًا في نفس الوقت
وظيفة قريبة وين () {
hasClosed = true;
window.opener.location="javascript:reloadPage();";
window.Close();
}
نافذة الوظيفة.onbeforeunload(){
إذا (! hasClosed) {
window.opener.location="javascript:reloadPage();";
}
}
</script>
سيظهر الكود أعلاه خطأ عند إغلاق النافذة B، قائلًا إن الكائن مفقود، الكود الصحيح هو كما يلي:
وظيفة قريبة وين () {
hasClosed = true;
window.opener.location="javascript:reloadPage();";
window.opener=null;
window.Close();
}
نافذة الوظيفة.onbeforeunload(){
if(!hasClosed){// إذا تم تنفيذ طريقة CloseWin، فلن يتم تنفيذ هذه الطريقة.
window.opener.location="javascript:reloadPage();";
}
}
</script>
طريقة إعادة تحميل الصفحة هي كما يلي:
إعادة تحميل الوظيفة () {
History.go(0);
document.execCommand("تحديث")
document.location = document.location؛
document.location.reload();
}
ملاحظة: نظرًا لأننا نحتاج إلى دعم الإغلاق العادي والإغلاق القسري للنوافذ لالتقاط الأحداث، فإننا نستخدم المتغير الشامل hasClosed.
========================================================================================
بالإضافة إلى ذلك، عندما تكون النافذة الأصلية عبارة عن إطار، قد تحدث مشكلات عند تحديث النافذة الأصلية:
لا يمكن تحديث الصفحة دون إعادة إرسال المعلومات.
تم تعديله لاحقا على النحو التالي:
window.opener.parent.document.frames.item('mainFrame').location.href = window.opener.location.href;
ليست هناك حاجة لتنفيذ طريقة reload() المضمنة. احرص على عدم إضافة هذه الجملة بشكل غير ضروري:
window.opener.parent.document.frames.item('mainFrame').location.reload();
================================================================================================== =================================================================
أخيرًا، لدعم تحديث النافذة الأصلية العادية والنافذة الأصلية للإطار في نفس الوقت، يكون الكود كما يلي:
وظيفة قريبة وين () {
hasClosed = true;
<%if(null != إطار){%>
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(true);
window.opener = null;
window.Close();
}
نافذة الوظيفة.onbeforeunload(){
إذا (! hasClosed) {
<%if(null != إطار){%>
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.في مربع نص بمعرف "name"، يمكن كتابته على النحو التالي:
window.opener.document.getElementById("name").value = "بيانات الإدخال";
ليس لديك فهم جيد لـ window.opener في جافا سكريبت.
لماذا لا يمكن استخدامه في الإطار؟ لماذا لا يمكن أن تكون النافذة الأصلية للنافذة المنبثقة على صفحة داخل الإطار؟ فكيف يتم تشغيل النافذة الرئيسية في الإطار من خلال نافذة منبثقة؟
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);
</script>
<نوع الإدخال = "زر" onclick = "تنبيه (i)">
النافذة الفرعية: cd.jsp
<النص البرمجي>
وظيفة فرعية () {
window.opener.i=5;
window.Close();
}
</script>
<نوع الإدخال = "زر" onclick = "subm ()">
أفضل إجابة يمكنك وضعها في النافذة الرئيسية
<معرف الإدخال = "من الطفل" نوع = "مخفي" />
<نوع الإدخال = "زر"
onclick="alert(document.getElementById('fromChild').value)">
في النافذة الفرعية:
وظيفة فرعية () {
window.opener.document.getElementById('fromChild').value=5;
window.Close();
}
يمكن القيام بذلك
<الرأس>
<لغة البرنامج النصي=جافا سكريبت>
إغلاق نافذة الوظيفة()
{ window.opener=null;
window.Close();
}
</script>
</الرأس>
<الجسم>
<input id = "Button1" type = "button" value = "button" onclick = "window Close ()" />
</الجسم>
-