1

onchangeイベントが発生したときにバックグラウンドでMIDIファイルを自動的に再生するドロップダウンリストを作成しようとしています。これはFirefoxで正常に機能していますが、IEとChromeは、想定されているときにQuickTimeプレーヤーを起動しません。静的ソースを使用して埋め込みコードをテストしましたが、3つのブラウザーすべてで正常に機能します。

<form name="music">
    <select name='audiomenu' onchange="midiplay(this);">
        <option value="">No Music</option>
        <option value="midi/1.mid">Background 1</option>
        <option value="midi/2.mid">Background 2</option>
     </select>
</form>

<script type="text/javascript">
    function midiplay(what) {   
        document.getElementById('midijuke').src = what.options[what.selectedIndex].value;
    }
</script> 

<embed src="#" id="midijuke" autostart="true" loop="true" type="audio/midi" width="120" height="40"></embed>

IEとChromeもJavaScriptエラーを報告しません。

4

2 に答える 2

2

DOM の使用 (jQuery よりも簡単に DOM 操作を行うため):

var juke = document.getElementById('midijuke');

juke.src = 'http://blah.com/foo.mid';

juke.parentNode.removeChild(juke).appendChild(juke);

HTML マークアップは、JavaScript 文字列ではなく、HTML ドキュメントに属します。ラッパーは、文字列ではなくドキュメント内に配置する必要があります。DOM を操作する適切な方法は、DOM API を使用することです。

于 2012-04-19T06:55:46.103 に答える
0

全体を削除して、ドキュメントに再度添付するだけです。それはあなたのすべての手間を省きます。

function midiplay(w) {   
    var j=document.getElementById('midijuke');
    j.src = w.options[w.selectedIndex].value;
    j.parentNode.insertBefore(j,j);
}
于 2012-04-18T18:50:19.257 に答える