آرمین امیری نسب
2 سال پیش توسط آرمین امیری نسب مطرح شد
2 پاسخ

مشکل نمایش ندادن مدت زمان فایل صوتی قبل از فراخوانی فایل

سلام وقتتون بخیر 👋
یک موزیک پلیر با استفاده از جاوا اسکریپت نوشتم و داره به درستی کار میکنه.
مشکلی که وجود داره اینه که کد جاوا اسکریپت من قبل از لود شدن فایل صوتی اجرا میشه و به همین دلیل NaN برمیگردونه.
تونستم با یک تاخیر با تابع settimeout این مشکل رو حل کنم که بعد از چند صدم ثانیه این کارو انجام بده که فایل لود شده باشه ولی اصلا کار درست و بهینه ای نیست ، الان میخوام زمانی که فایل ها لود شدن تابع فراخوانی بشه.
آدرس مخزن :
https://github.com/arminamirinasab/*****-Player
 تصویر


ثبت پرسش جدید
T Game
@TGame 2 سال پیش مطرح شد
2

سلام دوست عزیز
برای اینکه script شما بعد از اینکه dom لود شد اجرا بشه کافیه از صفت defer تو تگ script استفاده کنی.
اما برای مشکل شما موقعی که میخوای duration یک audio رو بگیری باید مطمئن باشی که فایل لود شده باشه در غیر این صورت null برمیگردونه , برای چک کردن هم رویدادی د اریم به نام loadedmetadata که میتونی تو این لینک در موردش مطالعه کنی.
مثال کد شما

function calculateTime() {
  musicElem.addEventListener('loadedmetadata', () => {
    let songTime = Math.floor(musicElem.duration);
    let sMinute = Math.floor(songTime / 60);
    let sSecond = songTime - sMinute * 60;
    if (sSecond < 10) {
      sSecond = '0' + sSecond;
    }
    infoTime.innerHTML = `${sMinute}:${sSecond}`;
  });
}

آرمین امیری نسب
تخصص : برنامه نویس فرانت اند
@arminamirinasab 2 سال پیش مطرح شد
1

خیلی ممنونم ازت
از defer و async استفاده کرده بودم ولی مشکل حل نشده بود.
ولی ایونت loadmetadata کار کرد ، از این ایونت استفاده نکرده بودم تا به حال !
ممنون از این که مخزن و کد های من رو بررسی کردید و سپاس بابت زمانی که گذاشتید 🌹
اگه ممکنه آدرس گیت هابتون رو برام قرار بدید.


برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام