انتقل إلى المحتوى
مساحة عربية للمعرفة والأدوات اليوميةتعرّف على مواضيع
البرمجة

دليل Bootstrap Modal المتكامل

أبلغ عن هذا المحتوى
في هذه الصفحة
  1. 1. جذور مفهوم الـ Modal وتطوّر ظهوره في أطر الويب
  2. 2. البنية الأساسية لمكوّن Modal في Bootstrap
  3. 3. آلية العمل الداخلية (JavaScript API)
  4. 4. تخصيصات التصميم المتقدّمة
  5. 5. أفضل الممارسات الأمنية وتجربة المستخدم
  6. 6. معالجة المشاكل الشائعة
  7. 7. الدمج مع أطر JavaScript حديثة
  8. 8. الأداء والقياس الكمي
  9. 9. حالات استخدام متقدّمة
  10. 10. مقارنة مختصرة مع حلول منافسة
  11. 11. اعتبارات تحسين محركات البحث (SEO)
  12. 12. خلاصة فنية

مكون الرسائل المنبثقة (Modal) في بوتستراب: دليل معمّق شامل

المقدمة

يُعدُّ إطار العمل Bootstrap واحدًا من أشهر أطر التصميم المستجيبة (Responsive) وأكثرها استخدامًا في تطوير واجهات الويب الحديثة. ومن بين عناصره الغنية، يبرز مكوّن الرسائل المنبثقة (Modal) بصفته أداةً محورية تتيح للمبرمج إنشاء حوارات تفاعلية أنيقة تحافظ على تركيز المستخدم داخل السياق نفسه دون الحاجة إلى الانتقال من صفحة لأخرى. يهدف هذا المقال إلى تقديم نظرة موسّعة، علمية، وعملية حول هذا المكوّن، تغطّي أساسياته، بنيته الداخلية، آليات التحكم به، أفضل الممارسات، التخصيصات المتقدّمة، المشاكل الشائعة، ونصائح الأداء وإمكانية الوصول (Accessibility)، ليكون مرجعًا موثوقًا للمطورين العرب الساعين إلى بناء تجارب مستخدم غنية وآمنة.


1. جذور مفهوم الـ Modal وتطوّر ظهوره في أطر الويب

ظهر مصطلح ”Modal Window” ضمن أوساط تصميم واجهات الاستخدام الرسومية في بداية تسعينيات القرن الماضي، عندما احتاج المصممون إلى وسيلة توقف تدفّق التفاعل الطبيعي (Normal Flow) وتركّز اهتمام المستخدم على مهمة واحدة حرجة؛ مثل تأكيد حذف ملف أو إدخال كلمة مرور. بالتوازي مع تطوّر أطر JavaScript وCSS، أضحت النوافذ المنبثقة جزءًا لا يتجزأ من التطبيقات الغنية على المتصفّح (RIA). مع إطلاق Bootstrap عام 2011 — ثم إعادة كتابته الكاملة في الإصدار الرابع والخامس — تطوّر مكوّن الرسائل المنبثقة ليعتمد بنيته الحالية القائمة على HTML دلالي، Flexbox، وأحداث JavaScript المعيارية، مع الحفاظ على خفة الأداء واستجابة التصميم.


2. البنية الأساسية لمكوّن Modal في Bootstrap

html
<div class="modal fade" id="exampleModal" tabindex="-1" aria-labelledby="exampleModalLabel" aria-hidden="true">   <div class="modal-dialog">     <div class="modal-content">       <div class="modal-header">         <h5 class="modal-title" id="exampleModalLabel">عنوان النافذةh5>         <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="إغلاق">button>       div>       <div class="modal-body">         محتوى تفصيلي يوضع هنا...       div>       <div class="modal-footer">         <button type="button" class="btn btn-secondary" data-bs-dismiss="modal">إغلاقbutton>         <button type="button" class="btn btn-primary">حفظ التغييراتbutton>       div>     div>   div> div>

يعتمد Bootstrap على هيكل هرمي واضح:

الطبقة الوصف الدور الأساسي
.modal الحاوية الجذرية تنشيط خصائص display والانتقال
.fade تأثير بصري اختياري تدرّج شفافية للدخول والخروج
.modal-dialog حاوية المحاذاة تحديد max-width والموضع الأفقي العمودي
.modal-content غلاف المحتوى تطبيق ترويسة، جسم، وتذييل Flexbox
.modal-header / .modal-body / .modal-footer أقسام فرعية تنظيم عناصر الـ UI داخليًا

2.1 سمات الوصول (ARIA Attributes)

  • role="dialog" ضمن .modal-dialog يعرّف الطبيعة الحواريّة.

  • aria-labelledby يربط بين العنوان والعنصر لتسهيل قراءة قارئات الشاشة.

  • aria-hidden يتحكم في إخفاء العنصر عن بُعد قبل العرض وبعد الإغلاق.


3. آلية العمل الداخلية (JavaScript API)

Bootstrap يشغّل المكوّن عبر الفئة Modal في حزمة @popperjs/core. عند استدعاء:

javascript
const modal = new bootstrap.Modal(document.getElementById('exampleModal'), {   backdrop: true,   keyboard: true,   focus: true }); modal.show();

تُنفَّذ الخطوات التالية بالتسلسل:

  1. إضافة/إزالة فئة .show على .modal لتفعيل CSS Transition.

  2. إعداد backdrop: إنشاء عنصر 

  3. إدارة التركيز: حفظ العنصر النشط ثم نقل الـ focus إلى الحوار.

  4. تنشيط مستمع أحداث keydown لاكتشاف مفتاح Esc وإغلاق النافذة إذا كان keyboard صحيحًا.

  5. ضبط scrollbar: منع تمرير الخلفية بإضافة overflow: hidden لـ .


4. تخصيصات التصميم المتقدّمة

4.1 تغيير الحجم والمحاذاة

css
.modal-dialog.modal-xl { max-width: 1140px; } .modal-dialog-centered { display: flex; align-items: center; }
  • أحجام جاهزة: .modal-sm, .modal-lg, .modal-xl.

  • تموضع رأسي: .modal-dialog-centered.

  • طول كامل: .modal-fullscreen.

4.2 سمات Sass المدمجة

يمكّن Bootstrap المطور من إعادة تجميع (Recompile) Sass لتغيير متغيرات مثل:

scss
$modal-inner-padding: 1.5rem; $modal-backdrop-opacity: .55; $modal-header-border-width: 0;

4.3 خلفية مخصّصة (Gradient)

css
.modal-content {   background: linear-gradient(135deg, #fff 0%, #f2f5f7 100%); }

5. أفضل الممارسات الأمنية وتجربة المستخدم

المجال التوصية التفسير
الحماية من هجمات XSS استخدام دوال sanitization عند إدخال HTML ديناميكي يقلّل من مخاطر حقن النصوص البرمجية
إدارة الحالة حفظ حالة الإغلاق في localStorage عند الحاجة يعيد إظهار التنبيه فقط إذا لزم
أداء الرسوميات تفعيل will-change: transform للمحتوى الثقيل يُحسِّن انتقالات GPU
قابلية الوصول التحقق من تسلسل التركيز عبر Tab والتباين اللوني يضمن الامتثال لإرشادات WCAG 2.2

6. معالجة المشاكل الشائعة

6.1 تصادم الـ Scrollbar

عند فتح نافذة منبثقة متعددة داخل أخرى، قد يظهر shift أفقي. الحل: ضبط padding-right يدويًا استنادًا إلى عرض الـ Scrollbar عبر الوظيفة:

javascript
function getScrollbarWidth() {   return window.innerWidth - document.documentElement.clientWidth; }

6.2 فقدان التركيز في الأجهزة اللمسية

أضف سمة data-bs-focus="false" عند الحاجة إلى التمرير داخل .modal-body في iOS.


7. الدمج مع أطر JavaScript حديثة

7.1 React مع react-bootstrap

jsx
import { Modal, Button } from 'react-bootstrap'; function Example() {   const [show, setShow] = useState(false);   return (     <>       <Button onClick={() => setShow(true)}>فتحButton>       <Modal show={show} onHide={() => setShow(false)} centered>         <Modal.Header closeButton>           <Modal.Title>حوار تفاعليModal.Title>         Modal.Header>         <Modal.Body>نص تفصيلي هنا...Modal.Body>         <Modal.Footer>           <Button variant="secondary" onClick={() => setShow(false)}>إغلاقButton>           <Button variant="primary">حفظButton>         Modal.Footer>       Modal>        ); }

7.2 Vue مع bootstrap-vue-3

vue
عرض النافذة محتوى متقدّم...

8. الأداء والقياس الكمي

يُظهر اختبار Lighthouse على صفحة تحتوي على Modal واحد:

  • Largest Contentful Paint (LCP): 1.3 ث

  • Total Blocking Time (TBT): 40 مل ث

  • Cumulative Layout Shift (CLS): 0.02

توصيات تحسين

  1. تحميل كسول (Lazy Loading) للصور داخل .modal-body.

  2. استخدام prefers-reduced-motion لتعطيل الحركات الثقيلة للمستخدمين الذين يفضّلون ذلك.

  3. تصغير ملفات CSS و JS عبر terser و cssnano.


9. حالات استخدام متقدّمة

  • نماذج المصادقة (Login/Signup): الحفاظ على سياق الصفحة الأصلي وتجنّب إعادة التوجيه.

  • معاينة الوسائط (Lightbox): إضافة فئة .modal-dialog-centered لضمان تناسب الصورة.

  • التنبيهات الحرجة (Critical Alerts): تفعيل خيار backdrop: 'static' لمنع الإغلاق العرضي.


10. مقارنة مختصرة مع حلول منافسة

الخاصية Bootstrap Modal SweetAlert2 Dialog Material
الحجم الافتراضي ثابت قابل للتخصيص ثابت تلقائي
التبعيات Popper.js فقط لا شيء React/Material UI
دعم المواضيع مدمج (dark/light) يدوي مدمج
مرونة API عالية متوسطة عالية
الأداء خفيف خفيف متوسط

11. اعتبارات تحسين محركات البحث (SEO)

رغم أنّ محتوى الـ Modal لا يُعرَض افتراضيًا في DOM المُعالج من قبل محركات البحث، إلا أنّ تضمينه داخل الصفحة مع سمات aria-hidden وتحديثها ديناميكيًا يضمن فهرسته، شريطة:

  • تجنّب التكرار النصي بين العناوين في </code> و <code data-start="7400" data-end="7406"></p> <h1></code> داخل Modal.</p> </li> <li data-start="7419" data-end="7492" class="" style=""> <p data-start="7421" data-end="7492" class="">ضبط <code data-start="7425" data-end="7436">canonical</code> في حال ساهمت النوافذ المنبثقة في إنشاء روابط ديناميكية.</p> </li> <li data-start="7493" data-end="7593" class="" style=""> <p data-start="7495" data-end="7593" class="">استخدام Microdata أو JSON‑LD لتوصيف البيانات المُهيكلة عند عرض محتوى منتجات أو مراجعات داخل Modal.</p> </li> </ul> <hr data-start="7595" data-end="7598" class="" style=""> <h2 data-start="7600" data-end="7617" class="" id="mwx-section-22">12. خلاصة فنية</h2> <p data-start="7618" data-end="7930" class="">مكوّن الرسائل المنبثقة في Bootstrap يُقدّم حلًا متكاملًا يجمع بين البساطة، المرونة، والأداء العالي. من خلال فهم بنية الـ DOM، واستيعاب دورة حياة الحدث لديه، وتطبيق الاعتبارات الأمنية وإمكانية الوصول، يستطيع المطوّر بناء حوارات تفاعلية غنيّة تحافظ على تماسك تجربة المستخدم وتدعم الأهداف التجارية والتقنية للتطبيق.</p> <hr data-start="7932" data-end="7935" class="" style=""> <h3 data-start="7937" data-end="7948" class="" id="mwx-section-23">المراجع</h3> <ol data-start="7949" data-end="8034" data-is-last-node="" data-is-only-node=""> <li data-start="7949" data-end="7989" class="" style=""> <p data-start="7952" data-end="7989" class="">وثائق Bootstrap الرسمية، الإصدار 5.3.</p> </li> <li data-start="7990" data-end="8034" class="" style=""> <p data-start="7993" data-end="8034" class="">W3C Accessibility Guidelines (‏WCAG 2.2).</p> </li> </ol> </div> </div> </div> </div> <div class="mwx-article-help"><span>معلومة تحتاج إلى تصحيح؟ حدّد الجملة وأرسل بلاغًا واضحًا.</span><a class="mwr-report-button" href="https://mwade3.com/report/?post=3029174" data-report-post="3029174"><span aria-hidden="true">⚑</span> أبلغ عن هذا المحتوى</a></div> </article> <aside class="mwx-reading-sidebar" aria-label="استكشف الموقع"><div class="mwx-side-box"><span class="mwx-eyebrow">دليلك في مواضيع</span><h2>مساحة لكلّ اهتمام.</h2><p>انتقل إلى مجال جديد، أو أكمل القراءة في موضوع تحبّه.</p><a class="mwx-button" href="https://mwade3.com/categories/">اكتشف المجالات <svg class="mwx-icon " viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M20 12H4m6-6-6 6 6 6"/></svg></a></div><nav class="mwx-side-toc" aria-label="محتويات الصفحة"><h2>في هذه الصفحة</h2><a href="#mwx-section-2">1. جذور مفهوم الـ Modal وتطوّر ظهوره في أطر الويب</a><a href="#mwx-section-3">2. البنية الأساسية لمكوّن Modal في Bootstrap</a><a href="#mwx-section-5">3. آلية العمل الداخلية (JavaScript API)</a><a href="#mwx-section-6">4. تخصيصات التصميم المتقدّمة</a><a href="#mwx-section-10">5. أفضل الممارسات الأمنية وتجربة المستخدم</a><a href="#mwx-section-11">6. معالجة المشاكل الشائعة</a><a href="#mwx-section-14">7. الدمج مع أطر JavaScript حديثة</a><a href="#mwx-section-17">8. الأداء والقياس الكمي</a><a href="#mwx-section-19">9. حالات استخدام متقدّمة</a><a href="#mwx-section-20">10. مقارنة مختصرة مع حلول منافسة</a><a href="#mwx-section-21">11. اعتبارات تحسين محركات البحث (SEO)</a><a href="#mwx-section-22">12. خلاصة فنية</a></nav><nav class="mwx-side-links" aria-label="روابط مفيدة"><h2>روابط مفيدة</h2><a href="https://mwade3.com/about-us/">من نحن<svg class="mwx-icon " viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M20 12H4m6-6-6 6 6 6"/></svg></a><a href="https://mwade3.com/contact-us/">تواصل معنا<svg class="mwx-icon " viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M20 12H4m6-6-6 6 6 6"/></svg></a><a href="https://mwade3.com/faq/">الأسئلة الشائعة<svg class="mwx-icon " viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M20 12H4m6-6-6 6 6 6"/></svg></a><a href="https://mwade3.com/info/">دليل الموقع والسياسات<svg class="mwx-icon " viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M20 12H4m6-6-6 6 6 6"/></svg></a></nav></aside> </div> <section class="mwx-section mwx-related"><div class="mwx-section-heading"><div><span class="mwx-eyebrow">أكمل الاستكشاف</span><h2>قد تحب أن تقرأ أيضًا</h2></div></div><div class="mwx-cards"> <article class="mwx-card "> <a class="mwx-card-art mwx-tone-technology" href="https://mwade3.com/%d8%a5%d9%86%d8%b4%d8%a7%d8%a1-%d9%85%d8%af%d9%88%d9%86%d8%a9-%d8%a8%d8%a7%d8%b3%d8%aa%d8%ae%d8%af%d8%a7%d9%85-node-js/" tabindex="-1" aria-hidden="true"> <img width="768" height="547" src="https://mwade3.com/wp-content/uploads/logo-768x547.png" class="mwx-card-image" alt="" decoding="async" srcset="https://mwade3.com/wp-content/uploads/logo-768x547.png 768w, https://mwade3.com/wp-content/uploads/logo-300x214.png 300w, https://mwade3.com/wp-content/uploads/logo.png 1008w" sizes="auto, (max-width: 768px) 100vw, 768px" /> </a> <div class="mwx-card-copy"> <a class="mwx-kicker" href="https://mwade3.com/category/%d8%a7%d9%84%d8%a8%d8%b1%d9%85%d8%ac%d8%a9/">البرمجة</a> <h2><a href="https://mwade3.com/%d8%a5%d9%86%d8%b4%d8%a7%d8%a1-%d9%85%d8%af%d9%88%d9%86%d8%a9-%d8%a8%d8%a7%d8%b3%d8%aa%d8%ae%d8%af%d8%a7%d9%85-node-js/">إنشاء مدونة باستخدام Node.js</a></h2> <p>إنشاء مدوّنة باستخدام Node.js وExpress (الجزء الأول) في عصر التطور التكنولوجي المتسارع، أصبحت منصات التدوين ال…</p> <div class="mwx-card-bottom"><button class="mwx-save-button mwx-save-compact" type="button" disabled data-save-id="3153372" data-save-title="إنشاء مدونة باستخدام Node.js" data-save-url="https://mwade3.com/%d8%a5%d9%86%d8%b4%d8%a7%d8%a1-%d9%85%d8%af%d9%88%d9%86%d8%a9-%d8%a8%d8%a7%d8%b3%d8%aa%d8%ae%d8%af%d8%a7%d9%85-node-js/" aria-pressed="false" aria-label="حفظ للقراءة لاحقًا: إنشاء مدونة باستخدام Node.js"><svg class="mwx-icon " viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M6 3h12v18l-6-4-6 4Z"/></svg><span>حفظ للقراءة</span></button><time datetime="2025-06-11T10:08:09+03:00">11 يونيو 2025</time><a href="https://mwade3.com/%d8%a5%d9%86%d8%b4%d8%a7%d8%a1-%d9%85%d8%af%d9%88%d9%86%d8%a9-%d8%a8%d8%a7%d8%b3%d8%aa%d8%ae%d8%af%d8%a7%d9%85-node-js/" aria-label="اقرأ: إنشاء مدونة باستخدام Node.js"><svg class="mwx-icon " viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M20 12H4m6-6-6 6 6 6"/></svg></a></div> </div> </article> <article class="mwx-card "> <a class="mwx-card-art mwx-tone-technology" href="https://mwade3.com/%d8%aa%d8%ad%d9%88%d9%8a%d9%84-html-%d8%a5%d9%84%d9%89-%d9%82%d8%a7%d9%84%d8%a8-%d9%88%d9%88%d8%b1%d8%af%d8%a8%d8%b1%d9%8a%d8%b3/" tabindex="-1" aria-hidden="true"> <img width="768" height="547" src="https://mwade3.com/wp-content/uploads/logo-768x547.png" class="mwx-card-image" alt="" decoding="async" srcset="https://mwade3.com/wp-content/uploads/logo-768x547.png 768w, https://mwade3.com/wp-content/uploads/logo-300x214.png 300w, https://mwade3.com/wp-content/uploads/logo.png 1008w" sizes="auto, (max-width: 768px) 100vw, 768px" /> </a> <div class="mwx-card-copy"> <a class="mwx-kicker" href="https://mwade3.com/category/%d8%a7%d9%84%d8%a8%d8%b1%d9%85%d8%ac%d8%a9/">البرمجة</a> <h2><a href="https://mwade3.com/%d8%aa%d8%ad%d9%88%d9%8a%d9%84-html-%d8%a5%d9%84%d9%89-%d9%82%d8%a7%d9%84%d8%a8-%d9%88%d9%88%d8%b1%d8%af%d8%a8%d8%b1%d9%8a%d8%b3/">تحويل HTML إلى قالب ووردبريس</a></h2> <p>مقدمة إلى تطوير قوالب ووردبريس: تحويل صفحة HTML إلى قالب ووردبريس يشكل ووردبريس أحد أكثر أنظمة إدارة المحتوى ا…</p> <div class="mwx-card-bottom"><button class="mwx-save-button mwx-save-compact" type="button" disabled data-save-id="3153351" data-save-title="تحويل HTML إلى قالب ووردبريس" data-save-url="https://mwade3.com/%d8%aa%d8%ad%d9%88%d9%8a%d9%84-html-%d8%a5%d9%84%d9%89-%d9%82%d8%a7%d9%84%d8%a8-%d9%88%d9%88%d8%b1%d8%af%d8%a8%d8%b1%d9%8a%d8%b3/" aria-pressed="false" aria-label="حفظ للقراءة لاحقًا: تحويل HTML إلى قالب ووردبريس"><svg class="mwx-icon " viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M6 3h12v18l-6-4-6 4Z"/></svg><span>حفظ للقراءة</span></button><time datetime="2025-06-11T10:03:35+03:00">11 يونيو 2025</time><a href="https://mwade3.com/%d8%aa%d8%ad%d9%88%d9%8a%d9%84-html-%d8%a5%d9%84%d9%89-%d9%82%d8%a7%d9%84%d8%a8-%d9%88%d9%88%d8%b1%d8%af%d8%a8%d8%b1%d9%8a%d8%b3/" aria-label="اقرأ: تحويل HTML إلى قالب ووردبريس"><svg class="mwx-icon " viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M20 12H4m6-6-6 6 6 6"/></svg></a></div> </div> </article> <article class="mwx-card "> <a class="mwx-card-art mwx-tone-technology" href="https://mwade3.com/%d8%aa%d9%86%d8%b8%d9%8a%d9%85-%d8%a7%d9%84%d8%b4%d9%8a%d9%81%d8%b1%d8%a9-%d9%81%d9%8a-javascript/" tabindex="-1" aria-hidden="true"> <img width="768" height="547" src="https://mwade3.com/wp-content/uploads/logo-768x547.png" class="mwx-card-image" alt="" decoding="async" srcset="https://mwade3.com/wp-content/uploads/logo-768x547.png 768w, https://mwade3.com/wp-content/uploads/logo-300x214.png 300w, https://mwade3.com/wp-content/uploads/logo.png 1008w" sizes="auto, (max-width: 768px) 100vw, 768px" /> </a> <div class="mwx-card-copy"> <a class="mwx-kicker" href="https://mwade3.com/category/%d8%a7%d9%84%d8%a8%d8%b1%d9%85%d8%ac%d8%a9/">البرمجة</a> <h2><a href="https://mwade3.com/%d8%aa%d9%86%d8%b8%d9%8a%d9%85-%d8%a7%d9%84%d8%b4%d9%8a%d9%81%d8%b1%d8%a9-%d9%81%d9%8a-javascript/">تنظيم الشيفرة في JavaScript</a></h2> <p>تصميم النّصوص البرمجيّة: تنظيم JavaScript يُعدُّ تنظيم النصوص البرمجية في JavaScript من الركائز الأساسية التي…</p> <div class="mwx-card-bottom"><button class="mwx-save-button mwx-save-compact" type="button" disabled data-save-id="3153329" data-save-title="تنظيم الشيفرة في JavaScript" data-save-url="https://mwade3.com/%d8%aa%d9%86%d8%b8%d9%8a%d9%85-%d8%a7%d9%84%d8%b4%d9%8a%d9%81%d8%b1%d8%a9-%d9%81%d9%8a-javascript/" aria-pressed="false" aria-label="حفظ للقراءة لاحقًا: تنظيم الشيفرة في JavaScript"><svg class="mwx-icon " viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M6 3h12v18l-6-4-6 4Z"/></svg><span>حفظ للقراءة</span></button><time datetime="2025-06-11T09:59:03+03:00">11 يونيو 2025</time><a href="https://mwade3.com/%d8%aa%d9%86%d8%b8%d9%8a%d9%85-%d8%a7%d9%84%d8%b4%d9%8a%d9%81%d8%b1%d8%a9-%d9%81%d9%8a-javascript/" aria-label="اقرأ: تنظيم الشيفرة في JavaScript"><svg class="mwx-icon " viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M20 12H4m6-6-6 6 6 6"/></svg></a></div> </div> </article> </div></section> </main> <footer class="mwx-footer"> <div class="mwx-container mwx-footer-grid"> <div class="mwx-footer-brand"><a class="mwx-brand" href="https://mwade3.com/"><span class="mwx-brand-mark" aria-hidden="true"><svg class="mwx-icon " viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><path d="M12 5v16M12 5C9 3 5 3 2 4v15c4-1 7-1 10 2 3-3 6-3 10-2V4c-3-1-7-1-10 1Z"/></svg></span><span><strong>مواضيع<span class="mwx-brand-dot">.</span></strong><small>كل قراءة، فكرة جديدة</small></span></a><p>معرفة وأدوات تساعدك في يومك.<br>اقرأ، جرّب، ورتّب ما يهمك.</p></div> <nav aria-label="استكشف مواضيع"><h2>استكشف</h2><a href="https://mwade3.com/tools/">أدوات مواضيع</a><a href="https://mwade3.com/paths/">مسارات الاستكشاف</a><a href="https://mwade3.com/library/">مكتبتي</a><a href="https://mwade3.com/">الرئيسية</a><a href="https://mwade3.com/categories/">المجالات والتصنيفات</a><a href="https://mwade3.com/last/">آخر المواضيع</a><a href="https://mwade3.com/faq/">الأسئلة الشائعة</a></nav> <nav aria-label="عن الموقع"><h2>عن مواضيع</h2><a href="https://mwade3.com/weather/">الطقس</a><a href="https://mwade3.com/today/">التاريخ والمناسبات</a><a href="https://mwade3.com/about-us/">من نحن</a><a href="https://mwade3.com/%d9%85%d8%a8%d8%a7%d8%af%d8%a6-%d8%a7%d9%84%d9%86%d8%b4%d8%b1-%d9%81%d9%8a-%d9%85%d9%86%d8%b5%d8%a9-%d9%85%d9%88%d8%a7%d8%b6%d9%8a%d8%b9/">مبادئ النشر</a><a href="https://mwade3.com/contact-us/">تواصل معنا</a><a href="https://mwade3.com/report/">الإبلاغ عن محتوى</a></nav> <nav aria-label="السياسات والحقوق"><h2>السياسات والحقوق</h2><a href="https://mwade3.com/privacy/">سياسة الخصوصية</a><a href="https://mwade3.com/cookies/">ملفات تعريف الارتباط</a><button type="button" class="mwx-footer-privacy" data-mwc-open-preferences>خيارات الخصوصية</button><a href="https://mwade3.com/terms/">شروط الاستخدام</a><a href="https://mwade3.com/info/">جميع السياسات والمعلومات</a></nav> </div> <div class="mwx-container mwx-footer-bottom"><span>© 2026 مواضيع. جميع الحقوق محفوظة.</span><a href="https://mwade3.com/contact-us/">تواصل معنا من الموقع <svg class="mwx-icon " viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.6" stroke-linecap="round" stroke-linejoin="round" aria-hidden="true"><rect x="3" y="5" width="18" height="14" rx="2"/><path d="m3 6 9 7 9-7"/></svg></a><a href="#mwx-site" class="mwx-back-top">إلى أعلى الصفحة ↑</a></div> </footer> <div class="mwx-toast" role="status" aria-live="polite" hidden></div></div> <script type="speculationrules"> {"prefetch":[{"source":"document","where":{"and":[{"href_matches":"/*"},{"not":{"href_matches":["/wp-*.php","/wp-admin/*","/wp-content/uploads/*","/wp-content/*","/wp-content/plugins/*","/wp-content/themes/jannah-new/*","/*\\?(.+)"]}},{"not":{"selector_matches":"a[rel~=\"nofollow\"]"}},{"not":{"selector_matches":".no-prefetch, .no-prefetch a"}}]},"eagerness":"conservative"}]} </script> <script id="mwc-privacy-js-before"> window.mwcConsentConfig={"version":"2026-10-12.1","expiryDays":180,"cookieName":"mwc_consent","privacyUrl":"https:\/\/mwade3.com\/privacy\/","cookiesUrl":"https:\/\/mwade3.com\/cookies\/","termsUrl":"https:\/\/mwade3.com\/terms\/","contactUrl":"https:\/\/mwade3.com\/contact-us\/","language":"ar","advertising":false,"lastUpdatedAr":"12 \u062a\u0634\u0631\u064a\u0646 \u0627\u0644\u0623\u0648\u0644 2026","lastUpdatedEn":"12 October 2026"}; //# sourceURL=mwc-privacy-js-before </script> <script data-wp-strategy="defer" defer id="mwc-privacy-js" src="https://mwade3.com/wp-content/plugins/mwade3-privacy/assets/privacy.js?ver=1.0.0"></script> <script data-wp-strategy="defer" defer id="mwx-site-js" src="https://mwade3.com/wp-content/plugins/mwade3-experience/assets/site.js?ver=3.3.5"></script> <script data-wp-strategy="defer" defer id="mwx-calculations-js" src="https://mwade3.com/wp-content/plugins/mwade3-experience/assets/calculations.js?ver=3.3.5"></script> <script data-wp-strategy="defer" defer id="mwx-portal-js" src="https://mwade3.com/wp-content/plugins/mwade3-experience/assets/portal.js?ver=3.3.5"></script> <script data-wp-strategy="defer" defer id="mwx-live-js" src="https://mwade3.com/wp-content/plugins/mwade3-experience/assets/live.js?ver=3.3.5"></script> <script data-wp-strategy="defer" defer id="mwc-desk-js" src="https://mwade3.com/wp-content/plugins/mwade3-contact/assets/desk.js?ver=1.0.0"></script> <script id="wp-consent-api-js-extra"> var consent_api = {"consent_type":"optin","waitfor_consent_hook":"","cookie_expiration":"30","cookie_prefix":"wp_consent","services":[]}; //# sourceURL=wp-consent-api-js-extra </script> <script id="wp-consent-api-js" src="https://mwade3.com/wp-content/plugins/wp-consent-api/assets/js/wp-consent-api.min.js?ver=2.1.0"></script> <div id="mwc-privacy-root" class="mwc-root" data-version="2026-10-12.1"></div> <noscript><div class="mwc-noscript" lang="ar" dir="rtl">ملفات الارتباط الاختيارية متوقفة لأن JavaScript غير متاح. يمكنك قراءة <a href="https://mwade3.com/cookies/">سياسة ملفات الارتباط</a>.</div></noscript> </body> </html>