سلام دوستان . به نظرتون چرا کد زیر تو همه مرورگرها کار میکنه غیر از سافاری!؟
function setTimeCounters() {
$(".time-counter").each(function (index, elem) {
let exp = new Date($(this).attr('data-time'));
var x = setInterval(function() {
let now = (new Date()).getTime();
let ex = (new Date(exp)).getTime();
let distance = ex - now;
let days = Math.floor(distance / (1000 * 60 * 60 * 24));
let hours = Math.floor((distance % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
let minutes = Math.floor((distance % (1000 * 60 * 60)) / (1000 * 60));
let seconds = Math.floor((distance % (1000 * 60)) / 1000);
$(elem).find(".time").html(`${showNumber(days)}:${showNumber(hours)}:${showNumber(minutes)}:${showNumber(seconds)}`);
if ((hours+minutes+seconds) <= 0) {
clearInterval(x);
$(elem).html("زمان به اتمام رسید");
}
}, 1000);
});
}
همین گفتگو داخل stackowerflow هم گزاشتم :
https://stackoverflow.com/questions/63993628/javascript-time-counter-problem-with-safari-browser
مشکل از استاندارد نبودن فرمت تاریخی بود که به صورت اولیه بهش میدادم. اگر فرمت استاندارد باشه حله
(new DateTime($date))->format(DateTime::ATOM)
تاریخ رو به این روش ابتدا داخل html کار گزاشتم حل شد
بررسی کرده اید که آیا سافاری با جی کوئری مشکلی داره؟ یا بی ایراد هستش؟
شاید پاسخ شما همینجا باشد
@milad
شاید به صورت partial داشته باشد. اما در کل با jquery مشکل ندارد ظاهرا
ممنون از شما بابت گذاشتن کدهای صحیح در اینجا برای سایرین.