📅  最后修改于: 2023-12-03 15:15:33.697000             🧑  作者: Mango
HTML DOM 中的 revokeObjectURL() 方法用于在使用完 URL.createObjectURL() 方法创建的 URL 对象后释放该 URL 对象占用的内存空间。
URL.revokeObjectURL(objectURL)
<body>
<audio controls>
<source src="audio.mp3" type="audio/mpeg">
</audio>
<button onclick="stopAudio()">停止播放</button>
<script>
var audioObj = document.getElementsByTagName('audio')[0];
var sourceObj = audioObj.getElementsByTagName('source')[0];
sourceObj.src = URL.createObjectURL(new Blob(["Hello world!"], {type: 'audio/mpeg'}));
audioObj.load();
audioObj.play();
function stopAudio() {
audioObj.pause();
audioObj.currentTime = 0;
URL.revokeObjectURL(sourceObj.src);
}
</script>
</body>
以上示例展示了如何使用 URL.createObjectURL() 方法来创建一个 Blob URL,该 Blob URL 用于播放一个音频文件。当单击停止播放按钮时,调用 stopAudio() 函数,此函数会先停止播放音频文件,随后再通过调用 URL.revokeObjectURL(sourceObj.src) 方法来释放该 Blob URL 对象占用的内存空间。
使用 URL.createObjectURL() 方法创建的 URL 对象,一旦释放,就无法访问了。如果程序员尝试使用该 URL 对象,就会得到一个错误。因此,在使用 URL.createObjectURL() 方法创建 URL 对象时,需要根据实际需求,考虑清楚如何及时地释放该 URL 对象以释放内存。