2012-04-18 13 views
1

onchangeが自動的にバックグラウンドでmidiファイルを再生するドロップダウンリストを作成しようとしています。これはFirefoxでもうまくいきますが、IEとChromeはQuickTimeプレーヤーを起動することさえしません。私は、静的なソースを持つ埋め込みコードをテストし、3つのブラウザすべてで問題なく動作します。Javascript srcの変更がFirefox/Firefoxで動作しない

<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エラーを報告していません。

+1

QuickTimeプレイヤーを??? (申し訳ありませんが自分自身を助けることができませんでした) – PeeHaa

+0

@RepWhoringPeeHaa、あなたはより良い提案がありますか? MIDIファイルは、通常、HTML5の「

答えて

0

すべてを削除して、ドキュメントに再度添付します。それはあなたにすべての面倒を保存します。

/編集:明確化

function midiplay(w) { 
    var j=document.getElementById('midijuke'); 
    j.src = w.options[w.selectedIndex].value; 
    j.parentNode.insertBefore(j,j); 
} 
+0

申し訳ありませんが、私はあなたが何を意味するのか分かりません。 – user1342220

+0

@ user1342220答えを更新しました。 –

2

ちょうど全体を削除し、文書にそれを再接続します。それはあなたにすべての面倒を保存します。

/EDIT :DOMを使用して明確化

(それはDOM操作jQueryのよりも簡単しているため):本当に

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

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

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

おかげさまであなたは私の答えをどのようにコピーしたのですか?そして、「ジューク」が別のポジションに追加される可能性があり、その親の中にいました。それが私がプレースホルダーとしてラッパーを使用していた理由です。 –

+0

JavaScriptの文字列よりも面白いマークアップがHTML文書で優れています。ラッパーは、文字列ではなく文書内に置かなければなりません。私の指摘は、DOMを使用したDOM操作は非常に簡単で、文字列とドル記号の混乱ではなく、実際の読み取り可能なコードとなりました。 –

+0

さて、私はあなたにちょうど "マスターのオウム"のバッジを持っているべきだと思います。 –

関連する問題