纯html+js实现点击音频MP3直接下载非打开页面播放

很多朋友做网站时候想要实现点击a标签下载MP3文件,但是会遇到点击a标签就直接打开新的页面播放了,不是下载文件。今天就来说说如何处理这个问题。

网上看了很多帖子,总结了几个方法。

方法1. 把下载放到后端处理,前台html通过ajax请求后端,然后下载。

方法2. 通过a标签download属性下载。实验了几次这种方法。发现需要相对路径才可以,绝对路径会打开新页面播放。

因为是纯html+js来实现点击a标签下载,所以这里来说说方法2的具体实现步骤。

首先,说下遇到的情况。因为我这里为了方便后台使用,直接用的是百度ueditor编辑器插入音频Audio,实现音频播放的。接下来看具体的代码:


<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>纯html+js来实现点击a标签下载</title>
<!-- 引入jQuery库 -->
<script src="js/jquery-1.9.1.min.js" type="text/javascript"></script>
<!-- 页面样式文件 -->
<link href="css/style.css" rel="stylesheet" type="text/css">
</head>
<body>
<!-- 按钮文件区域 -->
<div id="anq">
<a href="#" onclick="control()">播放/暂停</a>
<a href="#" onclick="repeat()" >重新开始</a>
<a href="#" id="xz" download="{$title}">下载音频</a> <!-- {$title}是从后台传过的音频名称 -->
</div>
<!-- 后台编辑器发布内容区域开始 -->

<!-- 因为百度编辑器直接插入的audio标签,所以没有id选择器 -->
<p style="text-align: center;">
<audio class="audio-js" controls="" preload="none" src="http://www.12564.cn/ueditor/upload/1616382683569438.mp3" >
</audio>
</p>
<!-- 后台编辑器发布内容区域结束 -->


<!-- 给audio加入选择器 -->
<script>
var obj = document.getElementsByTagName("audio")[0]; //查询Adudio标签
obj.setAttribute("id","myaudio") //给Audio标签加上 id="myaudio"
var path = document.getElementById("myaudio").src=obj.src; //获取Adudio标签里MP3音乐文件路径
url = path.replace(/^http:\/\/[^/]+/, "");  //过滤掉MP3音乐文件路径里的网址
//alert(url);
document.getElementById("xz").href=url;  //得到MP3音乐文件的相对路径,并把它赋值到下载音频按钮的 href=""里面,这样就完成点击下载了。
</script>

<!-- 判断页面是否含有audio标签,有就显示播放暂停和下载按钮,没有就隐藏 -->
<script>
if(document.getElementById("myaudio")){

} else {
document.getElementById("anq").style.display="none";//隐藏
}
</script>

<!-- 移动按钮位置 让播放暂停下载按钮始终在Aduio标签下面 -->
<script language="javascript">
$("#anq").insertAfter($("#myaudio"));
</script>


<!-- 播放暂停控制 -->
<script language="javascript" type="text/javascript">
function repeat() {
    var audio = document.getElementById('myaudio');
    audio.currentTime = 0; //重新播放
}
function control() {
    var audio = document.getElementById('myaudio');
    if (audio !== null) {
        if (audio.paused) {
            audio.play(); // 播放
        } else {
            audio.pause(); // 暂停
        }
    }
}
</script>

</body>
</html>

最终效果如下:

js点击a标签下载音频效果

通过以上代码就可以在html里面完成点击a标签直接下载音频了,如果你也有这个需求就去试试吧。

如果内容有帮助,就点个赞吧!

转载注明出处:http://www.12564.cn/show-190.html

如有疑问请联系 QQ:644233191   微信:zw1688k