29-03-26, 04:28 AM
(آخر تعديل لهذه المشاركة : 29-03-26, 04:35 AM {2} بواسطة Amir_Alzubidy.)
لا لا ابداً ما فيه تاخير ولا شي
الحل: نميز بين الحالتين
قبل انتهاء الوقت -------إغلاق مؤقت
[*]بعد انتهاء الوقت ------- إغلاق نهائي
طيب بالحالة ذي انت تحتاج امر اغلاق ( اغلاق نهائي )
تأجيل يخفيه مؤقت ويرجع يفتح (مثلاً بعد 1 دقيقة حتى انقضاء مدة المهلة )
الحل: نميز بين الحالتين
قبل انتهاء الوقت -------إغلاق مؤقت
[*]بعد انتهاء الوقت ------- إغلاق نهائي
PHP كود :
<!DOCTYPE html>
<html lang="ar">
<head>
<meta charset="UTF-8">
<title>تنبيه صلاة الفجر</title>
<style>
#overlay {
display: none;
position: fixed;
width: 100%;
height: 100%;
background: rgba(0,0,0,0.5);
top: 0;
left: 0;
}
#popup {
display: none;
position: fixed;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
background: #fff;
padding: 20px;
border-radius: 10px;
text-align: center;
}
#countdown {
font-size: 18px;
margin-top: 20px;
text-align: center;
}
button {
margin-top: 10px;
}
</style>
</head>
<body>
<div id="overlay"></div>
<div id="popup">
<h3>تنبيه صلاة الفجر</h3>
<p>حان الآن وقت صلاة الفجر</p>
<button onclick="temporaryClose()">إغلاق</button>
</div>
<div id="countdown"></div>
<script>
const fajrTime = "3:20";
let popupInterval;
let endTime = null;
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() {
let now = new Date().getTime();
if (now >= endTime) {
clearInterval(popupInterval);
localStorage.removeItem("fajrEndTime");
closePopup();
} else {
closePopup();
}
}
function startFajrAlert(savedEndTime = null) {
endTime = savedEndTime || (new Date().getTime() + 5 * 60 * 1000);
localStorage.setItem("fajrEndTime", endTime);
popupInterval = setInterval(() => {
let now = new Date().getTime();
if (now >= endTime) {
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));
}
}
setInterval(updateCountdown, 1000);
checkSavedAlert();
scheduleFajr();
updateCountdown();
</script>
</body>
</html>
(29-03-26, 03:53 AM)nnnjk كتب : لاكن لو امكن عند اغلاق النافذه لا يعاود فتحها
طيب بالحالة ذي انت تحتاج امر اغلاق ( اغلاق نهائي )
تأجيل يخفيه مؤقت ويرجع يفتح (مثلاً بعد 1 دقيقة حتى انقضاء مدة المهلة )


![[صورة مرفقة: 177461173141861.gif]](https://up6.cc/2026/03/177461173141861.gif)