عنصر iframe وsrc وsandbox
تضمين صفحات الجهات الخارجية وتقييد إمكاناتها
عنصر iframe وsrc وsandbox درس مجاني في HTML Academy على CoddyKit. هذا هو الدرس 1 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في HTML Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة HTML Academy 4 دروس في المجموع.
ما هو iframe؟
يضمّن العنصر <iframe> مستند HTML آخر داخل الصفحة الحالية. ويملك كل iframe سياق تصفح وDOM ونطاق JavaScript خاصًا به. ولا يمكن للمحتوى داخل iframe الوصول إلى DOM الخاص بالصفحة الأب دون إذن صريح.
الاستخدام الأساسي لـ iframe
اضبط الخاصية src على عنوان URL المراد تضمينه: <iframe src="https://example.com" width="800" height="600">. ينشئ iframe سياق تصفح جديدًا. وتُعد الخاصية title مطلوبة لإتاحة الوصول: title="Embedded map".
الخاصية sandbox
تفرض sandbox قيودًا على محتوى iframe، إذ تعطل النصوص البرمجية والنماذج والنوافذ المنبثقة والإضافات افتراضيًا. أضف أذونات محددة لاستعادة الإمكانات المطلوبة: sandbox="allow-scripts allow-same-origin".
أذونات sandbox
allow-scripts: يفعّل JavaScript. allow-same-origin: يسمح بمعاملة iframe على أنه من المصدر نفسه، وهو مطلوب للوصول إلى localStorage. allow-forms: يفعّل إرسال النماذج. allow-popups: يسمح باستخدام window.open(). امنح الحد الأدنى من الأذونات المطلوبة فقط.
إطارات iframe من مصادر مختلفة
لا يمكن لإطارات iframe من مصادر مختلفة الوصول إلى DOM الأب؛ إذ تؤدي parent.document إلى خطأ أمني. ويستخدم التواصل بين الإطارات من مصادر مختلفة postMessage: iframe.contentWindow.postMessage(data, origin).
التواصل باستخدام postMessage
أرسل رسائل من الصفحة الأب إلى iframe باستخدام: iframe.contentWindow.postMessage({ type: "update", data: {} }, "https://embed.example.com"). واستمع إليها داخل iframe باستخدام: window.addEventListener("message", handler). تحقّق دائمًا من event.origin قبل معالجة الرسالة.
التحميل الكسول لإطارات iframe
تؤجل loading="lazy" على إطارات iframe تحميلها حتى تقترب من نافذة العرض، ما يقلل وقت التحميل الأولي للصفحة. وهي مفيدة للخرائط وتضمينات الفيديو وعناصر وسائل التواصل الاجتماعي الموجودة أسفل الجزء المرئي من الصفحة وغير الظاهرة فورًا.
أداء iframe
يحمّل كل iframe مستند HTML وملفات CSS وJavaScript والأصول الخاصة به بشكل منفصل، ما يفرض تكلفة كبيرة على الموارد. تجنب استخدام iframes للمحتوى الذي يمكن تضمينه كمقتطف. حمّل iframes الموجودة أسفل الجزء الظاهر من الصفحة عند الحاجة. ضع في اعتبارك استخدام نمط الواجهة البديلة (اعرض عنصراً نائباً وحمّل المحتوى عند النقر).
التحكم في التمرير
تحكّم في سلوك تمرير iframe: scrolling="no" يعطّل أشرطة التمرير (وهو استخدام مهجور؛ استخدم CSS overflow: hidden على iframe). النهج الحديث هو ضبط ارتفاع iframe ليتطابق مع ارتفاع المحتوى، ما يلغي الحاجة إلى أشرطة التمرير الداخلية.
السمة allow
تمنح السمة allow ميزات Permissions Policy لـ iframe: allow="camera; microphone; fullscreen". يتيح ذلك لـ iframe طلب الوصول إلى الكاميرا والميكروفون وواجهة fullscreen API، حتى عندما لا يستخدم الأصل الحاوي هذه الميزات.
تضمين YouTube وGoogle Maps
يوفّر YouTube وGoogle Maps رموز تضمين باستخدام iframe. وتتضمن هذه الرموز سمات allow لملء الشاشة والتشغيل التلقائي. أضف دائماً title="Video title" لإتاحة الوصول إلى قارئات الشاشة. لا تُضاف السمة sandbox عادةً إلى رموز تضمين الجهات الخارجية — راجع وثائقها للحصول على إرشادات الأمان.
اختبار المعرفة
ماذا تفعل السمة sandbox في iframe افتراضياً عند عدم تحديد أي قيم؟
الملخص
تضمّن iframes مستندات خارجية داخل سياقات تصفح معزولة. تقيّد السمة sandbox إمكانات iframe — لذا امنح فقط أقل الأذونات المطلوبة. يتيح postMessage التواصل الآمن بين المصادر المختلفة. يؤجّل التحميل الكسول تكلفة الموارد الخاصة بـ iframes الموجودة أسفل الجزء الظاهر من الصفحة. وتمنح السمة allow ميزات Permissions Policy لعمليات التضمين الموثوقة من جهات خارجية.
الأسئلة الشائعة
هل درس «عنصر iframe وsrc وsandbox» مجاني؟
نعم — نص درس «عنصر iframe وsrc وsandbox» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة HTML Academy، انتقل إلى CoddyKit PRO. تتضمن دورة HTML Academy 4 دروس في المجموع.
ماذا ستتعلم في «عنصر iframe وsrc وsandbox»؟
تضمين صفحات الجهات الخارجية وتقييد إمكاناتها تتمرن على HTML Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.
هل أحتاج إلى خبرة سابقة لأبدأ HTML Academy؟
لا تُشترط خبرة سابقة. HTML Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 1 من أصل 4.
كم من الوقت يستغرق درس «عنصر iframe وsrc وsandbox»؟
معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.
هل يمكنني كتابة وتشغيل أكواد في درس HTML Academy هذا؟
نعم. كل درس في HTML Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.
جميع الدروس في هذه الدورة
- عنصر iframe وsrc وsandbox
- أمان iframe: Clickjacking وX-Frame-Options
- عنصرا embed وobject
- التحميل الكسول لإطارات iframe