AJAX を使用して HTML ページの WAV ファイルをバックグラウンドでロードする必要があります。AJAX を使用して WAV ファイルの詳細を取得し、embed タグを使用すると、autostart を true に設定するとファイルが再生されるため、ファイルが正常にロードされたことを確認できます。ただし、ユーザーがボタンをクリックしたとき (またはイベントが発生したとき) にのみファイルを再生する必要があります。以下は、これらのファイルをプリロードするための私のコードです。
function preloadMedia() {
for(var i = 0; i < testQuestions.length; i++) {
var soundEmbed = document.createElement("embed");
soundEmbed.setAttribute("src", "/media/sounds/" + testQuestions[i].mediaFile);
soundEmbed.setAttribute("hidden", true);
soundEmbed.setAttribute("id", testQuestions[i].id);
soundEmbed.setAttribute("autostart", false);
soundEmbed.setAttribute("width", 0);
soundEmbed.setAttribute("height", 0);
soundEmbed.setAttribute("enablejavascript", true);
document.body.appendChild((soundEmbed));
}
}
次のコードを使用してファイルを再生します (ユーザーが再生したいサウンド ファイルに基づいて)
function soundPlay(which) {
var sounder = document.getElementById(which);
sounder.Play();
}
上記のコードを使用してファイルを再生することをテストしたブラウザーはどれもなかったため、ここで何かが間違っています。エラーはなく、コードは単に戻ります。
私はそのままにしておいたでしょう (つまり、クライアントにすべての WAV を MP3 に変換して MooTools を使用するよう説得したでしょう)。しかし、動的に埋め込まれていないサウンド ファイルを再生できることに気付きました。
したがって、同じ soundPlay 関数が、次の方法で埋め込まれたファイルに対して機能します。
<embed src="/media/sounds/hug_sw1.wav" id="sound2" width="0" heigh="0" autostart="false" enablejavascript="true"/>
HTML 内の任意の場所。
また、すべてのブラウザでうまく再生されます。
誰でもこれについて手がかりを持っていますか?これは、すべてのブラウザで文書化されていないセキュリティ制限のようなものですか? (autostart プロパティを true に設定することで確認できるように、ファイルは動的にプリロードされることを覚えておいてください - それらはすべて再生されます)。
どんな助けでも感謝します。