我正在尝试创建一个下拉列表,当onchange事件触发时,该列表将在后台自动播放Midi文件。在Firefox中这可以正常工作,但是IE和Chrome甚至不应该在需要时启动QuickTime播放器。我已经用静态源测试了嵌入代码,并且在所有三种浏览器中都可以正常工作。

<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错误。

最佳答案

使用DOM(因为它比jQuery更容易进行DOM操作):

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

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

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


HTML标记属于HTML文档,而不属于JavaScript字符串。包装程序应该放在文档中,而不是字符串中。操纵DOM的正确方法是使用DOM API。

10-05 18:40