HTML: iframe في HTML

يسمح لك <iframe> (إطار مضمن) بتضمين صفحة HTML أخرى داخل الصفحة الحالية. سواءً كان تضمين مقاطع فيديو أو خرائط أو صفحات ويب أخرى، فإن iframe أداة لا غنى عنها في تطوير الويب.

1. أساسيات iframe

استخدم <iframe src="URL"></iframe> لتضمين صفحة ويب أخرى في الصفحة الحالية. السمتان width و height تتحكمان في أبعاد العرض:

▶ مثال

HTML
<!-- تضمين صفحة بسيطة، عرض 600px، ارتفاع 400px -->
<iframe src="https://example.com" width="600" height="400">
متصفحك لا يدعم iframe.
</iframe>
▶ جرّب الكود

2. شرح سمات iframe

توفر iframe عدة سمات للتحكم في سلوك التضمين:

سمة name مع target تتيح للروابط الفتح داخل iframe:

HTML
<!-- iframe مسمى -->
### ▶ مثال
<iframe src="about:blank" name="content-frame"
width="100%" height="300"></iframe>

<!-- الروابط تفتح داخل iframe عبر target -->
<a href="https://www.wikipedia.org" target="content-frame">
فتح ويكيبيديا في iframe
</a>
<a href="https://www.example.com" target="content-frame">
فتح مثال في iframe
</a>
💡 إمكانية الوصول أولاً: سمة title ليست اختيارية لـ iframe — تعلنها قارئات الشاشة لمساعدة المستخدمين ضعاف البصر على فهم المحتوى المضمن. حتى لو لم تكن مرئية على الصفحة، أضف دائمًا title ذا معنى لكل iframe.


3. أمان iframe — سمة sandbox

سمة sandbox تفرض قيودًا إضافية على المحتوى داخل iframe وهي إجراء أمني مهم. يمكنها تقييد إرسال النماذج والنوافذ المنبثقة وتنفيذ البرامج النصية والسلوكيات الأخرى:

HTML
<!-- أقصى تقييد: تعطيل جميع الميزات المتقدمة -->
<iframe src="https://example.com" sandbox=""></iframe>

<!-- السماح بالبرامج النصية، لكن منع إرسال النماذج والنوافذ المنبثقة -->
<iframe src="https://example.com" sandbox="allow-scripts"></iframe>

<!-- السماح بالبرامج النصية والنماذج، لكن لا يزال يمنع النوافذ المنبثقة والتنقل -->
<iframe src="https://example.com"
sandbox="allow-scripts allow-forms"></iframe>

4. تضمين محتوى طرف ثالث

الاستخدام الأكثر شيوعًا لـ iframe في العالم الحقيقي هو تضمين المحتوى من خدمات الطرف الثالث، مثل فيديوهات YouTube وخرائط Google:

HTML
<!-- تضمين فيديو YouTube -->
<iframe width="560" height="315"
src="https://www.youtube.com/embed/VIDEO_ID"
### ▶ مثال
title="مشغل فيديو YouTube"
allow="accelerometer; autoplay; clipboard-write;
encrypted-media; gyroscope; picture-in-picture"
allowfullscreen></iframe>

<!-- تضمين خريطة Google -->
<iframe width="600" height="450"
src="https://www.google.com/maps/embed?pb=..."
title="خريطة Google"
allowfullscreen
loading="lazy"></iframe>

عند تضمين محتوى طرف ثالث، توفر المنصات عادةً كود iframe جاهزًا في خيارات المشاركة/التضمين — تحتاج فقط إلى النسخ واللصق. تأكد من تضمين سمة title و loading="lazy"" لتحسين أداء التحميل.


5. نظرة عامة على التواصل بين iframe والصفحة الأب

عندما يشترك iframe والصفحة الأب في نفس المصدر (نفس البروتوكول والنطاق والمنفذ)، يمكنك الوصول مباشرة إلى DOM بعضكما البعض عبر JavaScript. للسيناريوهات عبر النطاقات، يوفر HTML5 واجهة postMessage للتواصل الآمن:

HTML
<!-- الصفحة الأب ترسل رسالة -->
<iframe src="https://other-domain.com/page"
id="myFrame" title="صفحة عبر النطاقات"></iframe>
<script>
var frame = document.getElementById('myFrame');
frame.contentWindow.postMessage('مرحباً، iframe!', 'https://other-domain.com');
</script>

<!-- داخل iframe، استلام الرسالة (يجب أن يكون في الصفحة المضمنة) -->
<script>
window.addEventListener('message', function(event) {
// تحقق دائمًا من المصدر!
if (event.origin !== 'https://parent-domain.com') return;
console.log('تم الاستلام:', event.data);
});
</script>

🔒 نصيحة أمنية: عند استخدام postMessage، لا تثق أبدًا في أي شيء يتجاوز event.origin. تحقق دائمًا من مصدر الرسالة لتجنب إرسال بيانات حساسة إلى نطاقات غير موثوقة.


❓ أسئلة شائعة

س ما هي مخاطر أمان iframe؟
ج المخاطر الرئيسية: 1) Clickjacking — يضمّن المهاجمون صفحتك في موقع خبيث، مما ي诱导 المستخدمين على النقر;2) scripting عبر المواقع — يمكن للمحتوى المضمّن تشغيل JavaScript خبيث؛3) تسريب البيانات — يمكن لـ iframes الخبيثة سرقة معلومات المستخدم. Protections: استخدم sandbox لتقييد الوظائف، allow للتحكم الدقيق في الأذونات، رأس X-Frame-Options لمنع التضمين.
س لماذا يؤثر iframe على SEO؟
ج لدى محركات البحث قدرة محدودة على فهرسة محتوى iframe: 1) النصوص والروابط والصور داخل iframes قد لا تحتسب لصفحتك الرئيسية SEO;2) تزيد iframes من وقت تحميل الصفحة، مما يؤثر على نتائج Core Web Vitals;3) قد تتضرر تجربة الأجهزة المحمولة. التوصية: احتفظ بالمحتوى المهم على الصفحة الرئيسية، وليس في iframes؛ استخدم iframes فقط لتضمين مقاطع الفيديو والخرائط ومحتوى الطرف الثالث الآخر.
س ماذا تفعل سمة sandbox؟
ج تنشئ sandbox "صندوق رمل" لـ iframe، مع تعطيل جميع العمليات الخطيرة افتراضيًا (النصوص والنماذج والنوافذ المنبثقة، إلخ). يمكنك تمكين الأذونات تدريجيًا: sandbox="allow-scripts" يسمح بـ JavaScript، sandbox="allow-forms" يسمح بإرسال النماذج، sandbox="allow-same-origin" يسمح بالوصول إلى ملفات تعريف الارتباط. أذونات متعددة مفصولة بمسافة. التوصية: استخدم دائمًا sandbox، فقط فعّل الأذونات التي تحتاجها بالفعل.
س ما الفرق بين iframe و <embed>/<object>؟
ج <iframe> مخصص لتضمين صفحات HTML، مع دعم كامل للميزات (sandbox، postMessage، إلخ). <embed> و <object> يضمّنان محتوى غير HTML (مثل PDF و Flash و SVG). في HTML5، <embed> هو وسم فارغ؛ <object> يمكن أن يحتوي على محتوى احتياطي (<param> و fallback). التوصية: استخدم <iframe> لصفحات الويب، <embed> أو <object> لملفات PDF.

📖 ملخص

📝 تمارين

  1. ضمّن أول فيديو لك: ابحث عن فيديو YouTube، انسخ كود التضمين الخاص به، والصقه في ملف HTML الخاص بك. تأكد من إضافة سمة title و loading="lazy".
  2. تجربة Sandbox: أنشئ iframe، ابدأ بـ sandbox="" (أكثر وضع تقييدًا)، ثم فعّل تدريجيًا allow-scripts و allow-forms، ولاحظ كيف يتغير السلوك.
Web-Tutorial.com

فريق Web-Tutorial التقني

منصة دروس برمجية يديرها عدة مطورين. كل درس يتم كتابته ومراجعته بواسطة مطورين متخصصين في المجال. نعمل على ضمان دقة وموثوقية المحتوى — إذا لاحظت أي مشكلة، فيرجى إخبارنا.

100%