结合ActiveXObject和readAsBinaryString()

时间:2013-02-19 23:25:04

标签: javascript filereader activexobject

我想在浏览器中编写一个小型MP3播放器。所有mp3文件都保存在本地。

所以,我必须使用

var filePath = '...';
var fso = new ActiveXObject("Scripting.FileSystemObject");
var file = fso.GetFile(filePath);

以后

var oFReader = new FileReader();
oFReader.readAsBinaryString(file);

但我得到错误,该对象不支持“readAsBinaryString()”。因此,我认为对象“文件”与预期的对象不完全相同。

你能帮帮我吗?如何组合ActiveXObject()和readAsBinaryString()?

1 个答案:

答案 0 :(得分:0)

new ActiveXObject(...)将始终返回“自动化对象”。与DOM对象相比,这是一种不同类型的宿主对象。

具体而言,readAsBinaryString期望将Blob类型的对象作为参数,该对象可以是DOM File对象,但不是自动化对象。

但是,在撰写本文时,readAsBinaryString已从HTML5 File API draft中删除。

不是尝试阅读音频文件,更好的方法是使用HTML5 <audio>标记:

<audio autoplay="autoplay">
    <source src="YOUR_FILE_PATH_GOES_HERE" type="audio/wav">
</audio>

HTML5音频标记引用:https://developer.mozilla.org/en-US/docs/HTML/Element/audio

请务必检查您的浏览器是否支持所需的音频格式。例如,并非每个浏览器都支持“mp3”。如果您正在讨论ActiveX对象,可能是您正在使用应该支持版本9+(source)的mp3文件的Internet Explorer。