前提・実現したいこと
先日ご意見をいただいた 音楽をランダムに再生する際に曲名を表示させる機能 について、次の音楽を再生する際に404Errorになってしまった場合にそのログを残し、次の曲へ進むようにしたいのです。
不明な点
Javascriptでファイルを読み込んだ際に404エラーが出たときの動作を指定する方法がわかりません。
該当のソースコード
html
1<html> 2 <body> 3 <style> 4 td { 5 width: 370px; 6 } 7 </style> 8 <audio type="audio/mpeg" id="audioElement" controls="controls"> 9 <source id="srcElement" src="" type="audio/mp3"> 10 </audio> 11 <script type="text/javascript"> 12 var src = [ 13/* No.01 */'001.mp3', 14/* No.02 */'002.mp3', 15]; 16 var randmize_wrapper = function () { 17 var rand = Math.floor( Math.random() * src.length ); 18 return rand; 19 } 20 var currentRand = 0; 21 document.addEventListener("DOMContentLoaded", function(){ 22 var rand = randmize_wrapper(); 23 document.getElementById("srcElement").setAttribute('src', src[rand]); 24 currentRand = rand; 25 var audio_elm = document.getElementById("audioElement"); 26 audio_elm.load(); 27 audio_elm.play(); 28 }); 29 var audio_elm = document.getElementById("audioElement"); 30 audio_elm.addEventListener('ended', function(){ 31 var rand = randmize_wrapper(); 32 while ( currentRand == rand ) { 33 rand = randmize_wrapper(); 34 } 35 currentRand = rand; 36 document.getElementById("srcElement").setAttribute('src', src[rand]); 37 audio_elm.load(); 38 audio_elm.play(); 39 }); 40 function name() { 41 var element = document.createElement('div'); 42 var from = new Date(); 43 44 function time(){ 45 let nowTime = new Date(); 46 47 let nowHour = nowTime.getHours(); 48 let nowMin = nowTime.getMinutes(); 49 let nowSec = nowTime.getSeconds(); 50 51 if(nowHour<10){ 52 if(nowHour==0){ 53 NOWHour = "00" 54 }else{ 55 NOWHour = "0" + nowHour 56 } 57 }else{ 58 NOWHour = nowHour; 59 } 60 61 if(nowMin<10){ 62 if(nowMin==0){ 63 NOWMin = "00" 64 }else{ 65 NOWMin = "0" + nowMin 66 } 67 }else{ 68 NOWMin = nowMin; 69 } 70 71 if(nowSec<10){ 72 if(nowSec==0){ 73 NOWSec = "00" 74 }else{ 75 NOWSec = "0" + nowSec 76 } 77 }else{ 78 NOWSec = nowSec; 79 } 80 start_time = NOWHour + ":" + NOWMin + ":" + NOWSec; 81 } 82 setInterval(time, 500); 83 var playtime = audio_elm.currentTime; 84 if(playtime > 0 && playtime < 1){ 85 switch(currentRand){ 86case 0: 87element.innerHTML = '<table><tr><th>'+ start_time +'</th><td>ID:01 曲名A</td><td>作曲A</td></tr><table>'; 88break; 89case 1: 90element.innerHTML = '<table><tr><th>'+ start_time +'</th><td>ID:02 曲名B</td><td>作曲B</td></tr><table>'; 91break; 92default: 93element.innerHTML = start_time+' 【Error】NOT Found<br>'; 94break; 95} 96 97 document.body.insertBefore(element, audio_elm .nextSibling); 98 } 99 }; 100 setInterval(name, 1000); 101 </script> 102 </body> 103</html>
回答2件
あなたの回答
tips
プレビュー