Laravelで音楽プレイヤーを作成しています。
曲を再生するところまで実装が済んだのですが、シークバーの操作ができません。
以下は該当JSファイルです
music.js //シークバー $(window).on('load',function () { seek.addEventListener('click', (e) => { let duration = Math.round(Music.duration) console.log(duration); if (!isNaN(duration)) { let mouse = e.pageX let rect = seek.getBoundingClientRect() let position = rect.left + window.pageXOffset//ビューポート内位置+スクロール量(一応) let offset = mouse - position let width = rect.right - rect.left console.log(mouse); console.log(rect); console.log(position); console.log(offset); console.log(width); Music.currentTime = Math.round(duration * (offset / width)) console.log(Music.currentTime); }; }); });
durationは音声ファイルの長さ(時間)であり、offset(シークバー左端からクリックした時点までの長さ)/width(シークバー自体の長さ)で割合を出し、それをdurationにかけることによりクリック時点の再生時間を算出したものがMusic.currentTimeになります。
ローカルファイルのみ(html、jsファイル)のみで構成したときは異常なく動作したのですが、Laravelで同じ記述をしたところ、機能しなくなりました。
この関数内で算出した値を全てconsole.logで確認したところwidthまでは問題なく出ているのですが、なぜか最後のMusic.currentTimeが0になります。(スクショは操作前後)
なぜでしょうか?
https://github.com/koki1000/MusicPlayer.git
あなたの回答
tips
プレビュー