لماذا تحديث الصفحة بالكود أصلاً؟
\n\nتخيل: أنت تكتب دردشة، لعبة عبر الإنترنت، أو نموذج تواصل. المستخدم أرسل البيانات - وتوقف كل شيء. لرؤية النتيجة، عليه الضغط على F5 أو النقر بالماوس على زر المتصفح. غير مريح، أليس كذلك؟
\n\nوالآن تخيل أن الصفحة تحدث نفسها بنفسها - بمجرد اكتمال الإجراء. سحر؟ لا، إنها JavaScript النقية وبضعة أسطر من الكود. هذا بالضبط ما سنتحدث عنه اليوم.
\n\nالموضوع بسيط للوهلة الأولى، ولكن حتى المطورين ذوي الخبرة يخلطون أحيانًا بين طريقتي location.reload() و window.location.href. سنشرح جميع الخيارات، والمزالق، وأفضل الممارسات. هيا بنا!
الشخصية الرئيسية: location.reload()
\n\nالطريقة الأكثر شيوعًا وصحة لتحديث الصفحة عبر JavaScript هي طريقة location.reload(). تقوم بالضبط بما هو مكتوب على العلبة: إعادة تحميل المستند الحالي.
// أبسط خيار\nlocation.reload();\n\nلكن هناك فارق بسيط. تقبل هذه الطريقة معلمة اختيارية واحدة - قيمة منطقية forceGet.
- \n
location.reload()- يعيد تحميل الصفحة باستخدام ذاكرة التخزين المؤقت للمتصفح، إذا كان ذلك ممكنًا. \n location.reload(true)- تحميل إجباري من الخادم، متجاهلاً ذاكرة التخزين المؤقت. \n
الفرق ملحوظ عند العمل مع البيانات الديناميكية. إذا كنت بحاجة مضمونة للحصول على نسخة محدثة من الصفحة - استخدم true.
مقارنة: reload() مقابل window.location.href
\n\nعلى Stack Overflow كثيرًا ما يُسأل: "هل يمكن ببساطة تعيين window.location.href = window.location.href؟"
الإجابة المختصرة: يمكن، لكنها حل مؤقت. الإجابة الطويلة - انظر الجدول.
\n\nجدول مقارنة طرق إعادة تحميل الصفحة
\n\n| الطريقة | \nالسلوك | \nتستخدم ذاكرة التخزين المؤقت | \nموصى بها | \n
|---|---|---|---|
location.reload() | \n يعيد تحميل الصفحة | \nنعم (افتراضيًا) | \n✅ نعم | \n
location.reload(true) | \n إعادة تحميل إجباري من الخادم | \nلا | \n✅ نعم | \n
window.location.href = window.location.href | \n يعيد التوجيه إلى نفس الصفحة | \nنعم | \n⚠️ بحذر | \n
window.location = window.location | \n نفس الشيء، بشكل أقصر | \nنعم | \n⚠️ بحذر | \n
history.go(0) | \n الانتقال إلى الصفحة الحالية في السجل | \nنعم | \n❌ قديم | \n
كما ترى، location.reload() هي الطريقة الأكثر موثوقية وقابلية للتنبؤ. الخيارات الأخرى قد لا تعمل بشكل مستقر في متصفحات مختلفة.
التحديث التلقائي على فترات زمنية محددة
\n\nأحيانًا تحتاج الصفحة إلى التحديث تلقائيًا - على سبيل المثال، لعرض أسعار العملات أو حالة الخادم. هنا يأتي دور setTimeout أو setInterval.
التحديث بعد 5 ثوانٍ من التحميل
\n\n// انتظر 5 ثوانٍ، ثم أعد التحميل\nsetTimeout(function() {\n location.reload(true);\n}, 5000);\n\nالتحديث الدوري كل 30 ثانية
\n\n// تحديث الصفحة كل 30 ثانية\nsetInterval(function() {\n location.reload();\n}, 30000);\n\nهام: لا تفرط في استخدام التحديث التلقائي. إذا كانت الصفحة