كان لدى العديد من الأشخاص دائمًا فكرة أنه سيكون من الرائع أن يتمكنوا من تشغيل إطارات iframe كما يحلو لهم. بهذه الطريقة، تتمتع الصفحات الثابتة بالقدرة على تنفيذ تخطيط موحد متعدد الصفحات يعادل تضمين الصفحات الديناميكية في الخلفية وتطلبها php وjsp وasp.
بمساعدة Javascript، يمكننا تحميل محتوى صفحة html المشار إليها بواسطة سمة كائن iframe src ديناميكيًا مثل الخلفية. تتطلب مثل هذه العملية توفير صفحتين، إحداهما هي الصفحة التي يوجد بها إطار iframe ( اسم الصفحة: iPage.html )، والصفحة الأخرى هي الصفحة المشار إليها بواسطة سمة iframe src ( اسم الصفحة: srcPage.html ).
iPage.html، dom في <body>:
,<body>
دعنا نناقش كيفية تشغيل الصفحتين أعلاه باستخدام JS ضمن IE، وبعد ذلك ناقش طريقة فايرفوكس، وأخيرًا أعطِ مدى التوافق مع IE وفايرفوكس وطريقة تشغيل المتصفح لكائن iframe.
يعلم الجميع أن iframe عبارة عن علامة HTML غير قياسية، وهي علامة متعددة التخطيط يتم إطلاقها بواسطة متصفح IE، وقد دعمت Mozilla أيضًا هذه العلامة لاحقًا. (ثرثرة، هيهي)
1. يحصل عليه IE من خلال document.frames["IframeName"]. مثال: نقوم بإخراج محتوى h1 في srcPage.html في iPage.html كما يلي:
ستجد أن إضافة التعليمات البرمجية إلى الصفحة لا يبدو أنها تنتج العناصر المطلوبة. لماذا؟ لم أكتشف ذلك بعد. أنا فقط أقوم بإضافة window.onload وسيظهر الإخراج (ملاحظة: تمت كتابة كود JS في هذا الحدث).
لماذاالكود ضمن IE، ولكن لم يتم تعريف document.frames ضمن Firefox
2. أي طريقة أخرى للحصول عليها
لقد اجتازت هذه الطريقة اختبارات ie6، ie7، firefox2.0، وfirefox3.0. مهلا مهلا. (بعد التحقق عبر الإنترنت، وجدت ثغرة أمنية في تجاوز سعة المخزن المؤقت في Mozilla Firefox iframe.contentWindow.focus، مما يشكل خطر هجمات حقن البرامج النصية.
لاحقًا سمعت أنه يمكن منع ذلك في الخلفية، وقد شعرت بالارتياح. ومع ذلك، ما زلت آمل أن يتمكن الإصدار الجديد من Firefox من
حل
يمكنك الوصول إليه من خلال contentWindow، العقد هي نفسها كما كانت من قبل.
تدعم Mozilla معيار W3C للوصول إلى كائن المستند الخاص بإطار iframe من خلال IFrameElmRef.contentDocument . من خلال المعيار، يمكنك كتابة مستند واحد أقل، الكود:
تتوفر الآن طريقة متوافقة مع هذين المتصفحين، وهي استخدام طريقة contentWindow.
مهلا مهلا! هل يمكنني تشغيل iframe كما أريد؟ إذا كنت لا تزال تشعر بعدم الارتياح، فيمكنك أيضًا إعادة كتابة المحتوى في إطار iframe.
من خلال وضع التصميم (ضبط المستند على وضع التصميم القابل للتحرير) والمحتوى القابل للتحرير (ضبط المحتوى على وضع قابل للتحرير)، يمكنك إعادة كتابة المحتوى في إطار iframe. الكود:
للحصول على معلومات حول هذين الكائنين، يرجى الرجوع إلى: http://msdn.microsoft.com/en- us/ Library/ms533720(VS.85).aspx
firebug يختبر أداء الكود أعلاه، كما هو موضح في الشكل
قم بالتعليق iObj.document.designMode = 'On'؛
iObj.document.contentEditable = true
لم يتغير التأثير، وكفاءة الوقت تقارب ثلاثة أضعاف ما كانت عليه قبل التعليق التوضيحي. مهلا مهلا. يشير هذان الكائنان إلى أساليب الكتابة التي يستخدمها بعض الأشخاص على الإنترنت لإعادة كتابة المحتوى في iframe. في الواقع، ليست هناك حاجة لاستخدام designMode وcontentEditable ما لم تكن هناك احتياجات أخرى.
باستخدام المبادئ المذكورة أعلاه، من السهل جدًا تنفيذ ذلك، فقط قم بتعيين قيمة ارتفاع iframe على قيمة ارتفاع المستند الموجود بداخله. الكود
بسبب هذا المصطلح التقني للويب، مهلا، نتن!
المواد المرجعية:
https://developer.mozilla.org/cn/Migrate_apps_from_Internet_Explorer_to_Mozilla
http://msdn.microsoft.com/en-us/library/ms533690(VS.85).aspx