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

10 ماه پیش
توسط میلاد-م آپدیت شد
علی ( 14211 تجربه )
3 سال پیش
تخصص : Laravel

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

حسام موسوی ( 365856 تجربه )
3 سال پیش
تخصص : طراح و برنامه نویس

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

علی ( 14211 تجربه )
3 سال پیش
تخصص : Laravel

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

حسام موسوی ( 365856 تجربه )
3 سال پیش
تخصص : طراح و برنامه نویس

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

میلاد-م ( 185052 تجربه )
10 ماه پیش
تخصص : طراح رابط کاربری - Front-End

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

میلاد-م ( 185052 تجربه )
10 ماه پیش
تخصص : طراح رابط کاربری - Front-End

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

// 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');
میلاد-م ( 185052 تجربه )
10 ماه پیش
تخصص : طراح رابط کاربری - Front-End

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

Hamed Dehghan ( 920 تجربه )
10 ماه پیش
تخصص : کارشناس UI

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

Hamed Dehghan ( 920 تجربه )
10 ماه پیش
تخصص : کارشناس UI

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

برای ارسال پاسخ باید وارد سایت شوید