問題を分離するために、問題を数行にまで取り除きました。http://radiorice.com/mobile/broken.htmlで見ることができます。
オーディオ ファイルは、aac および ogg 形式で利用できます。<audio>
要素内にロードすると、モバイル Safari で正常に再生されます。しかし、SoundJS に登録しようとすると、「この Web ページで問題が発生しました...」というメッセージが表示されて Safari がクラッシュします。
このページは、デスクトップ Safari、Chrome、および iOS シミュレーターの iPhone 4s で実行しているモバイル Safari のバージョンでも正常に動作します。シミュレーターのコンソールで報告された問題はありません。
ページがロードされてからクラッシュは常に約 10 秒なので、モバイル Safari の 10 秒の時間制限に関連する問題ではないかと考え、10 秒の遅延で registerSound 呼び出しを timeout() 関数に入れてみました。それは単にクラッシュを10秒遅らせただけです。
これはメモリの問題ではないと思います。なぜなら、オーディオ ファイルは<audio>
タグ内で問題なく読み込んで再生できるからです。
<html>
<!DOCTYPE html>
<head>
<script src="https://code.createjs.com/soundjs-0.6.0.min.js"></script>
<script>
var sounds =[
{id:"Sleep_Talk_Recorder", src:"Sleep_Talk_Recorder.m4a"}
];
createjs.Sound.initializeDefaultPlugins();
createjs.Sound.alternateExtensions = ["ogg"];
createjs.Sound.on("fileload", handleLoad); // call handleLoad when each sound loads
createjs.Sound.registerSounds(sounds, "../content/sounds/small/");
function handleLoad(event) {
console.log("Preloaded:", event.id, event.src);
}
</script>
</head>
<body>
<p>Audio file plays fine:</p>
<audio controls>
<source src="../content/sounds/small/Sleep_Talk_Recorder.m4a" type="audio/aac">
<source src="../content/sounds/small/Sleep_Talk_Recorder.ogg" type="audio/ogg">
Your browser does not support the audio element.
</audio>
</body>
</html>