يصف مثال المقالة هذا طريقة صفحة Iframe Child المدمجة واتصال PAGE PAGE JS. شاركه للرجوع إليه. التحليل المحدد هو كما يلي:
من الواضح أن طريقة الاتصال بين الصفحة والصفحة الرئيسية في إطار IFRAME مختلفة اعتمادًا على ما إذا كانت سمة SRC في IFRAME مرتبطة بنفس المجال أو الرابط المتقاطع. يعد Exchange Exchange و DOM Element Access في نفس المجال أبسط بكثير ، في حين يتطلب المجال المتقاطع بعض الطرق الذكية لتحقيق التواصل.
1. التواصل بين صفحات الأب والابن تحت نفس المجال
PARTER PAGE PARTE.HTML:
انسخ الرمز كما يلي: <html>
<head>
<script type = "text/javaScript">
وظيفة says () {
ALERT ("parent.html ------> أنا في parent.html") ؛
}
وظيفة Callchild ()
{
//document.frames Budap"myframe"/201.window.say() ؛// فقط ينطبق على متصفح IE
myframe.window.say () ؛
myframe.window.document.getElementById ("زر"). value = "لقد تغيرت" ؛
}
</script>
</head>
<body>
<type type = button value = "callchild ()">
<iframe name = "myframe" src = "child.html"> </frame>
</body>
</html>
الصفحة الفرعية child.html:
انسخ الرمز كما يلي: <html>
<head>
<script type = "text/javaScript">
وظيفة يقول ()
{
ALERT ("child.html ---> أنا في child.html") ؛
}
وظيفة callparent () {
parent.say () ؛
parent.window.document.getElementSbyName ("myFrame") [0] .style.height = "100px" ؛
}
</script>
</head>
<body>
<input id = "button" type = button value = "استدعاء الدالة say () في parent.html" onClick = "CallParent ()">
</body>
</html>
استدعاء الطريقة
كما هو موضح في المثال أعلاه ، يمكن استخدام طريقة استدعاء الصفحة الفرعية للصفحة الأصل بواسطة: framename.window.childmethod () ؛ (هذه الطريقة متوافقة مع المتصفحات المختلفة)
طريقة صفحة الطفل التي تستدعي صفحة الأصل: parent.window.parentMethod () ؛
وصول عنصر DOM
بعد الحصول على كائن نافذة الطفل وفقًا لـ FramEname.window ، لا يختلف الوصول إلى عنصر DOM عن الوصول إلى عنصر DOM في نفس الصفحة. يمكنك نسخ الكود على النحو التالي: document.getElementById () ، document.getElementSbyName () [index] على سبيل المثال ، نسخ الرمز كما يلي: parent.window.document.getElementSyByName ("myFrame") [0] ؛
myframe.window.document.getElementById ("Button") يمكن حذف Windows.
أشياء يجب ملاحظتها
للتأكد من إجراء العملية بعد تحميل iframe ، إذا لم يتم تحميل iframe ، فسيؤدي ذلك بلا شك إلى حدوث خطأ. هناك طريقتان لتحديد ما إذا كان قد تم تحميل iframe:
1. استخدم حدث Onload على iframe ؛
2. استخدم document.readyState == "أكمل" للحكم
2. طريقة اتصال صفحة الوالدين والثون عبر المجال
إذا كان IFRAME يربط صفحة خارجية ، فلا يمكن استخدام طريقة الاتصال تحت نفس اسم المجال بسبب آلية الأمان.
تمرر صفحة الوالدين البيانات إلى صفحات الطفل
تتمثل تقنية التنفيذ في استخدام قيمة التجزئة لكائن الموقع وتمرير بيانات الاتصال من خلاله. نحتاج فقط إلى إضافة سلسلة #DATA إضافية بعد SRC من IFRAME (البيانات هي البيانات التي تريد تمريرها) ، ثم الحصول على البيانات بطريقة معينة في صفحة الطفل. في الواقع ، الطريقة الشائعة هي:
1. اضبط الموقت في الصفحة الفرعية باستخدام طريقة SetInterval للاستماع إلى التغييرات في الموقع. Href للحصول على معلومات البيانات أعلاه
2. ثم يمكن للصفحة الفرعية إجراء المعالجة المنطقية المقابلة بناءً على معلومات البيانات هذه.
تقوم صفحة الطفل بتمرير البيانات إلى الصفحة الأصل
تتمثل تقنية التنفيذ في استخدام وكيل iframe C ، الذي يتم تضمينه في صفحة الطفل ويجب أن يبقى في نفس المجال مثل الصفحة الأصل. بعد ذلك ، يمكننا تمرير بيانات الصفحة الفرعية إلى iframec من خلالها باستخدامها لاستخدام مبدأ التنفيذ بشكل كامل لطريقة الاتصال الأولى أعلاه. والسؤال التالي هو كيفية السماح لـ Iframec بتمرير البيانات إلى الصفحة الرئيسية A. لأن iframec والصفحة الرئيسية في نفس المجال ، يصبح من الأسهل بكثير تمرير البيانات بينهما ، وهي مشكلة اتصال تحت نفس اسم المجال. كما تمت مناقشته سابقًا ، يمكنك هنا استخدام نافذة خاصية تستخدم بشكل متكرر (يمكن أيضًا استخدام Window.Parent.Parent) ، والتي تُرجع مرجعًا إلى كائن النافذة العليا المحملة في المتصفح ، حتى نتمكن من استخدام الطريقة مباشرة في الصفحة الأصل.
آمل أن تكون هذه المقالة مفيدة لبرمجة JavaScript للجميع.