هل تقصد البقاء على التنبيه حتى لو تم اغلاق رسالة التنبيه لمدة 5 دقائق ؟
اذا كان كذلك فهذا التعديل يقوم بذلك .
كما يمكنك ابلاغي مساعدتك باضافة بقية اوقات الصلوات ان اردت
<div id="popup"> <h3>تنبيه صلاة الفجر</h3> <p>حان الآن وقت صلاة الفجر</p> <button onclick="temporaryClose()">إغلاق</button> </div>
<div id="countdown"></div>
<script> const fajrTime = "05:10"; let endTime; let popupInterval;
function showPopup() { document.getElementById("popup").style.display = "block"; document.getElementById("overlay").style.display = "block"; }
function closePopup() { document.getElementById("popup").style.display = "none"; document.getElementById("overlay").style.display = "none"; }
function temporaryClose() { closePopup(); }
function startFajrAlert() { endTime = new Date().getTime() + 5 * 60 * 1000; popupInterval = setInterval(() => { if (new Date().getTime() >= endTime) { clearInterval(popupInterval); closePopup(); } else { showPopup(); } }, 1000); }
function updateCountdown() { let now = new Date(); let [hour, minute] = fajrTime.split(":"); let fajrDate = new Date(); fajrDate.setHours(parseInt(hour)); fajrDate.setMinutes(parseInt(minute)); fajrDate.setSeconds(0); if (fajrDate < now) { fajrDate.setDate(fajrDate.getDate() + 1); } let diff = fajrDate - now; let hours = Math.floor(diff / 1000 / 60 / 60); let minutes = Math.floor((diff / 1000 / 60) % 60); let seconds = Math.floor((diff / 1000) % 60); document.getElementById("countdown").textContent = `الوقت المتبقي لصلاة الفجر: ${hours} ساعة، ${minutes} دقيقة، ${seconds} ثانية`; }
function scheduleFajr() { let now = new Date(); let [hour, minute] = fajrTime.split(":"); let fajrDate = new Date(); fajrDate.setHours(parseInt(hour)); fajrDate.setMinutes(parseInt(minute)); fajrDate.setSeconds(0); if (fajrDate < now) { fajrDate.setDate(fajrDate.getDate() + 1); } let diff = fajrDate - now; setTimeout(startFajrAlert, diff); }
صحيح احسنت هذه التفاتة مهمة
في حال تحديث الصفحة يتم إعادة حساب الوقت من جديد
الحل هو حفظ وقت انتهاء التنبيه في localStorage حتى يبقى محفوظ حتى بعد التحديث
<div id="popup"> <h3>تنبيه صلاة الفجر</h3> <p>حان الآن وقت صلاة الفجر</p> <button onclick="temporaryClose()">إغلاق</button> </div>
<div id="countdown"></div>
<script> const fajrTime = "05:10"; let popupInterval;
function showPopup() { document.getElementById("popup").style.display = "block"; document.getElementById("overlay").style.display = "block"; }
function closePopup() { document.getElementById("popup").style.display = "none"; document.getElementById("overlay").style.display = "none"; }
function temporaryClose() { closePopup(); }
function startFajrAlert(savedEndTime = null) { let endTime = savedEndTime || (new Date().getTime() + 5 * 60 * 1000); localStorage.setItem("fajrEndTime", endTime);
popupInterval = setInterval(() => { let now = new Date().getTime(); if (now >= endTime) { clearInterval(popupInterval); localStorage.removeItem("fajrEndTime"); closePopup(); } else { showPopup(); } }, 1000); }
function updateCountdown() { let now = new Date(); let [hour, minute] = fajrTime.split(":"); let fajrDate = new Date(); fajrDate.setHours(parseInt(hour)); fajrDate.setMinutes(parseInt(minute)); fajrDate.setSeconds(0); if (fajrDate < now) { fajrDate.setDate(fajrDate.getDate() + 1); } let diff = fajrDate - now; let hours = Math.floor(diff / 1000 / 60 / 60); let minutes = Math.floor((diff / 1000 / 60) % 60); let seconds = Math.floor((diff / 1000) % 60); document.getElementById("countdown").textContent = `الوقت المتبقي لصلاة الفجر: ${hours} ساعة، ${minutes} دقيقة، ${seconds} ثانية`; }
function scheduleFajr() { let now = new Date(); let [hour, minute] = fajrTime.split(":"); let fajrDate = new Date(); fajrDate.setHours(parseInt(hour)); fajrDate.setMinutes(parseInt(minute)); fajrDate.setSeconds(0); if (fajrDate < now) { fajrDate.setDate(fajrDate.getDate() + 1); } let diff = fajrDate - now; setTimeout(() => startFajrAlert(), diff); }
function checkSavedAlert() { let savedEndTime = localStorage.getItem("fajrEndTime"); if (savedEndTime) { startFajrAlert(parseInt(savedEndTime)); } }
29-03-26, 03:53 AM (آخر تعديل لهذه المشاركة : 29-03-26, 04:15 AM {2} بواسطة nnnjk.)
اسف طولت معك
لم يعمل الكود الاخير
عمل الكود بارك الله فيك
لاكن لو امكن عند اغلاق النافذه لا يعاود فتحها
الكود الاخير لم يظبط بعد انتهاء مدة التنبيه يستمر خروج النافذه
function updateCountdown() { let now = new Date(); let [hour, minute] = fajrTime.split(":"); let fajrDate = new Date(); fajrDate.setHours(parseInt(hour)); fajrDate.setMinutes(parseInt(minute)); fajrDate.setSeconds(0); if (fajrDate < now) { fajrDate.setDate(fajrDate.getDate() + 1); } let diff = fajrDate - now; let hours = Math.floor(diff / 1000 / 60 / 60); let minutes = Math.floor((diff / 1000 / 60) % 60); let seconds = Math.floor((diff / 1000) % 60); document.getElementById("countdown").textContent = `الوقت المتبقي لصلاة الفجر: ${hours} ساعة، ${minutes} دقيقة، ${seconds} ثانية`; }
function scheduleFajr() { let now = new Date(); let [hour, minute] = fajrTime.split(":"); let fajrDate = new Date(); fajrDate.setHours(parseInt(hour)); fajrDate.setMinutes(parseInt(minute)); fajrDate.setSeconds(0); if (fajrDate < now) { fajrDate.setDate(fajrDate.getDate() + 1); } let diff = fajrDate - now; setTimeout(() => startFajrAlert(), diff); }
function checkSavedAlert() { let savedEndTime = localStorage.getItem("fajrEndTime"); if (savedEndTime) { startFajrAlert(parseInt(savedEndTime)); } }
29-03-26, 04:52 AM (آخر تعديل لهذه المشاركة : 29-03-26, 05:35 AM {2} بواسطة Amir_Alzubidy.)
طيب الحين سؤال ما مهمة ال 5 دقائق ؟
طالما المستخدم خلاص قام باغلاق التنبيه
و المطلوب الان عدم اعادة اظهار التنبيه
علماً بأن الخمسة دقائق لم تنته بعد ..
خلاص الان اتضحت لي الفكرة .
بعد اعلان وقت الصلاة الفعلي يظهر التنبيه الاول
ثم بعد ذلك 5 دقائق ياتي تنبيه التذكير بقضاء الصلاة
هل هذا هو المطلوب؟
<div id="popup"> <h3 id="popupTitle">تنبيه صلاة الفجر</h3> <p id="popupMsg">حان الآن وقت صلاة الفجر</p> <button onclick="closePopupAndStartReminder()">إغلاق</button> </div>
<div id="countdown"></div>
<script> let fajrTime = "04:07"; // وقت الفجر المحدد مسبقًا let reminderTimeout; let reminderShown = false;
function showPopup(title = "تنبيه", msg = "حان الآن وقت الصلاة") { document.getElementById("popupTitle").textContent = title; document.getElementById("popupMsg").textContent = msg; document.getElementById("popup").style.display = "block"; document.getElementById("overlay").style.display = "block"; }
function closePopup() { document.getElementById("popup").style.display = "none"; document.getElementById("overlay").style.display = "none"; }
function closePopupAndStartReminder() { closePopup(); if (!reminderShown) { let endReminderTime = new Date().getTime() + 5 * 60 * 1000; localStorage.setItem("fajrReminderEnd", endReminderTime); startReminderCountdown(endReminderTime); } }
function startReminderCountdown(endTime) { reminderShown = true; reminderTimeout = setInterval(() => { let now = new Date().getTime(); if (now >= endTime) { clearInterval(reminderTimeout); localStorage.removeItem("fajrReminderEnd"); showPopup("تذكير", "يرجى قضاء صلاة الفجر"); } }, 1000); }
function startFajrAlert() { showPopup("تنبيه صلاة الفجر", "حان الآن وقت صلاة الفجر"); }
function checkSavedReminder() { let savedEndTime = localStorage.getItem("fajrReminderEnd"); if (savedEndTime) { let now = new Date().getTime(); if (now < parseInt(savedEndTime)) { startReminderCountdown(parseInt(savedEndTime)); } else { localStorage.removeItem("fajrReminderEnd"); } } }
function updateCountdown() { let now = new Date(); let [hour, minute] = fajrTime.split(":"); let fajrDate = new Date(); fajrDate.setHours(parseInt(hour)); fajrDate.setMinutes(parseInt(minute)); fajrDate.setSeconds(0); if (fajrDate < now) { fajrDate.setDate(fajrDate.getDate() + 1); } let diff = fajrDate - now; let hours = Math.floor(diff / 1000 / 60 / 60); let minutes = Math.floor((diff / 1000 / 60) % 60); let seconds = Math.floor((diff / 1000) % 60); document.getElementById("countdown").textContent = `الوقت المتبقي لصلاة الفجر: ${hours} ساعة، ${minutes} دقيقة، ${seconds} ثانية`; }
function scheduleFajr() { let now = new Date(); let [hour, minute] = fajrTime.split(":"); let fajrDate = new Date(); fajrDate.setHours(parseInt(hour)); fajrDate.setMinutes(parseInt(minute)); fajrDate.setSeconds(0); if (fajrDate < now) { fajrDate.setDate(fajrDate.getDate() + 1); } let diff = fajrDate - now; setTimeout(startFajrAlert, diff); }