تایمر در جی کوئری

2 سال پیش توسط میلاد-م آپدیت شد
آفلاین
user-avatar
علی ( 14411 تجربه )
4 سال پیش
تخصص : Laravel

لینک کوتاه اشتراک گذاری

1

سلام دوستان . من میخام یه پیج داشته باشم که کاربر باید یه کدی رو وارد کنه. بعد این کد انقضاش یک دقیقست . میخام تایمری رو بهش نشون بدم. حالا چیزی که مهمه اگه صفحه رفرش شد نباید اون تایمر زمانش از اول شروع بشه . چجوری میشه اینکارو کرد ؟

آفلاین
user-avatar
حسام موسوی ( 459435 تجربه )
4 سال پیش
تخصص : طراح و برنامه نویس

لینک کوتاه اشتراک گذاری

2

راهای مختلفی هست زمان هست و شما کمی باید javascript رو خوب بلد باشید
میتونید زمان رو داخل localStorage مرورگر ذخیره کنید و با هر بار رفرش شدن از اون بخونید اگر سفر بود از اول اگر نبود ادامه داستان
یا همین کارو با سرور انجام بدید

آفلاین
user-avatar
علی ( 14411 تجربه )
4 سال پیش
تخصص : Laravel

لینک کوتاه اشتراک گذاری

1

خب الان من این رو در localStorage قرار دادم. باز هم رفرش میکنم از نو شروع میشه. چجوری باید ادامشو بگیرم؟

آفلاین
user-avatar
حسام موسوی ( 459435 تجربه )
4 سال پیش
تخصص : طراح و برنامه نویس

لینک کوتاه اشتراک گذاری

0

من راهشو گفتم نمیدونم شما تو کد چیکار کردید . شما باید کدهاتون رو قرار بدید تا بشه فهمید داستان چیه

آفلاین
user-avatar
میلاد-م ( 261165 تجربه )
2 سال پیش
تخصص : طراح رابط کاربری - Front-End

لینک کوتاه اشتراک گذاری

0

صورت مسئله:
1) وقتی وارد صفحه میشه یک دقیقه شروع میشه.
2) زمانسنج باید با از نو شدن صفحه، مقدارش از اول نشه.
3) بعد از گذشت یک دقیقه زمانسنج تمام بشه.

آفلاین
user-avatar
میلاد-م ( 261165 تجربه )
2 سال پیش
تخصص : طراح رابط کاربری - Front-End

لینک کوتاه اشتراک گذاری

0

کدهای جاوااسکریپت

// enterTime and initialTime: اولین زمان ورود به صفحه توسط کاربر
// newTime: ورود اول یا دوم یا سوم و مراتب دیگر از طریق از نو کردن صفحه
// timer: متغیر نگهدارنده ی میزان زمان باقی مانده از مهلت یک دقیقه ای  ِ اولیه
if(!localStorage.getItem('initialTime')) {
    const enterTime = string(new Date().getTime() * 1000);
    localStorage.setItem('initialTime', 'enterTime');
}

const initialTime = Number(localStorage.getItem('initialTime'));
let newTime = new Date().getTime() * 1000;
let timer = 60 - (newTime - initialTime);
// متغیر زمانسنج را به نمایشگر شمارش معکوس تحویل می دهید تا شروع به ادامه ی شمارش معکوس کند

// در پایان
if(timer <= 0) localStorage.removeItem('initialTime');
آفلاین
user-avatar
میلاد-م ( 261165 تجربه )
2 سال پیش
تخصص : طراح رابط کاربری - Front-End

لینک کوتاه اشتراک گذاری

0

@hesammousavi
فقط یک مشکلی هستش، اگر کاربر بره توی تنظیمات مرورگر و مقدار ذخیره شده (localStorage) رو حذف کنه، دیگه از کنترل خارجش میکنه ها.

آفلاین
user-avatar
Hamed Dehghan ( 920 تجربه )
2 سال پیش
تخصص : کارشناس UI

لینک کوتاه اشتراک گذاری

1

مطمئن ترین راه این هست که هر دفعه که صفحه ریفرش میشه اون عدد رو از بک اند دریافت کنید و تا 0 که رسید یه درخواست بفرستید سمت بک اند که زمان تموم شده.
سمت بک اند میتونید تعیین کنید که تایمر چه زمانی از اول شروع بشه و چه زمانی همون تایمر قبل رو ادامه بده.

آفلاین
user-avatar
Hamed Dehghan ( 920 تجربه )
2 سال پیش
تخصص : کارشناس UI

لینک کوتاه اشتراک گذاری

1

@milad
میشه داخل session storage ذخیره کرد دوست عزیز.

برای ارسال پاسخ لازم است، ابتدا وارد سایت شوید.