Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/401.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript IE HTML5音频文件挂在windows localhost上-适用于所有其他浏览器和web_Javascript_Php_Internet Explorer_Html5 Audio_Freeze - Fatal编程技术网

Javascript IE HTML5音频文件挂在windows localhost上-适用于所有其他浏览器和web

Javascript IE HTML5音频文件挂在windows localhost上-适用于所有其他浏览器和web,javascript,php,internet-explorer,html5-audio,freeze,Javascript,Php,Internet Explorer,Html5 Audio,Freeze,我有mp3音频文件,可以在firefox和chrome中完美地工作。在ie 10和11中,它们在我的live网站上也能完美地工作 然而,突然在Windows7本地主机上,一个示例文件在一个实例中可以正常工作,但在下一个实例中,音频控件挂起。例如,以下代码使用文件1.mp3。我将1.mp3(也尝试了重命名)复制到some-other-name.mp3,但它不起作用-只是在控件可见的情况下挂起。我清除了网站数据和临时文件,但没有运气。我将文件重新命名为1.mp3,现在它不再工作。会发生什么事?在它自

我有mp3音频文件,可以在firefox和chrome中完美地工作。在ie 10和11中,它们在我的live网站上也能完美地工作

然而,突然在Windows7本地主机上,一个示例文件在一个实例中可以正常工作,但在下一个实例中,音频控件挂起。例如,以下代码使用文件1.mp3。我将1.mp3(也尝试了重命名)复制到some-other-name.mp3,但它不起作用-只是在控件可见的情况下挂起。我清除了网站数据和临时文件,但没有运气。我将文件重新命名为1.mp3,现在它不再工作。会发生什么事?在它自动更新到IE11之前,它在IE10中工作。我卸载了更新,回到ie 10,但这没有帮助。再一次,在我的现场网站上,一切都正常,甚至在ie中,让我发疯

我已经编写了代码来完全消除javascript。即使禁用了javascript,它仍然会冻结。有什么事吗?这是编解码器地狱吗

<table>
    <td><a href="?mp3file=1.mp3". onClick="CreateAudio('1.mp3', 'divid'); return false;">Play</a></td>
    <td><div id="divid"></div></td>
</table>

<?php
    if (isset($_GET['mp3file'])){
        // only here if javascript disabled
?>
        <audio id="audioplayer" preload controls autoplay style="width:225px ;">
                    <source src="<?php echo $_GET['mp3file']; ?>" type="audio/mpeg">
        </audio>
<?php
}           
?>

<script type="text/javascript">
currentAudioPlayerID="";
function CreateAudio(mp3file, id){
    // remove old player
    if (currentAudioPlayerID!=""){
        var oldaudio = document.getElementById("audio-" + currentAudioPlayerID);
        oldaudio.parentNode.removeChild(oldaudio)       
    };

    // add new player
    currentAudioPlayerID=id;
    var audio = document.createElement('audio');

    var source= document.createElement('source');
    source.type= 'audio/mpeg';
    source.src= mp3file;
    audio.appendChild(source);

    oggfile = mp3file.replace(".mp3",".ogg");
    source= document.createElement('source');
    source.type= 'audio/ogg';
    source.src= oggfile;
    audio.appendChild(source);

    audio.setAttribute("id", "audio-"+id)
    var div = document.getElementById(id);
    div.appendChild(audio);

    audio.load;
    audio.play();
    audio.controls = true;
    audio.autoplay="True"
    audio.style="width:225px;"
}
</script>


正如我正确理解的那样,使用短语“localhost”实际上可能意味着两件截然不同的事情。您是直接从桌面打开文件(双击图标,甚至在标题栏中键入地址,就像在本地文件系统上一样:C:\Users…\etc),还是实际运行的本地服务器正在尝试生成输出?不,我没有尝试从文件系统打开mp3(尽管文件以这种方式在任何媒体播放器中都可以正常打开)。我有一个localhost服务器,上面的代码被称为firefox、chrome和ie的网页。您是否尝试过在每个文件类型上为
source
使用不同的变量名?好主意。我将第二个源命名为source2,但得到了相同的结果。然后我将其完全删除(不需要ogg)但是得到了同样的结果。我添加了代码,完全消除了javascript。即使禁用了javascript,它仍然会冻结。这可能是编解码器的问题吗?