0

我想在我的浏览器中编写一个小型 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()?

4

1 回答 1

0

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

具体来说,期望BlobreadAsBinaryString类型的对象作为参数,该对象可能是 DOM File对象,但不是自动化对象。

但是,在撰写本文时,readAsBinaryString已从HTML5 文件 API 草案中删除。

与其尝试读取音频文件,更好的方法是使用 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 对象,大概您使用的是 Internet Explorer,它应该支持 9+ 版本的 mp3 文件(来源)。

于 2013-02-20T00:21:57.387 回答