javascript - 我的 mp3 链接被下载而不是在我的网络播放器上流式传输

标签 javascript html css

我的本​​地网络服务器 (OpenWrt) 上有一个 mp3 网络播放器,脚本:

<!DOCTYPE html>
<html>
<head>
    <link rel="stylesheet" href="music.css">
    <script src="music.js"></script>
</head>
<body>
    <audio id="audio" preload="auto" tabindex="0" controls="" type="audio/mpeg">
        <source type="audio/mp3" src="http://www.archive.org/download/bolero_69/Bolero.mp3">
        Sorry, your browser does not support HTML5 audio.
    </audio>
    <ul id="playlist">
        <li class="active"><a href="music1.mp3">Music 1</a></li>
        <li><a href="music2.mp3">Music 2</a></li>
        <li><a href="music3.mp3">Music 3</a></li>


    </ul>
</body>
</html>

每当我点击歌曲标题时,它们总是被我的 IDM 捕获,我不想下载歌曲,我只想流式传输它们。我该如何解决这个问题?

我的javascript:

var audio;
var playlist;
var tracks;
var current;

init();
function init(){
    current = 0;
    audio = $('audio');
    playlist = $('#playlist');
    tracks = playlist.find('li a');
    len = tracks.length - 1;
    audio[0].volume = .10;
    audio[0].play();
    playlist.find('a').click(function(e){
        e.preventDefault();
        link = $(this);
        current = link.parent().index();
        run(link, audio[0]);
    });
    audio[0].addEventListener('ended',function(e){
        current++;
        if(current == len){
            current = 0;
            link = playlist.find('a')[0];
        }else{
            link = playlist.find('a')[current];    
        }
        run($(link),audio[0]);
    });
}
function run(link, player){
        player.src = link.attr('href');
        par = link.parent();
        par.addClass('active').siblings().removeClass('active');
        audio[0].load();
        audio[0].play();
}

更新: 伙计们,我从 http://jsfiddle.net/WsXX3/33/ 得到了脚本奇怪的是,当我单击 jsfiddle 中的歌曲标题时,它会播放歌曲,但当我在自己的网络服务器上实现代码时,它会下载歌曲。我应该如何实现脚本?

@gratz 我按照你的建议做了,但仍然没有解决问题,这是我的完整脚本:

<!DOCTYPE html>
<html>
<head>
<style type="text/css">
#playlist,audio{background:#666;width:400px;padding:20px;}
.active a{color:#5DB0E6;text-decoration:none;}
li a{color:#eeeedd;background:#333;padding:5px;display:block;}
li a:hover{text-decoration:none;}
</style>
    <script type="text/javascript" src="https://code.jquery.com/jquery-1.11.2.min.js"></script>
    <script type="text/javascript">
var audio;
var playlist;
var tracks;
var current;

$(document).ready(function() {
  init();
});
function init(){
    current = 0;
    audio = $('audio');
    playlist = $('#playlist');
    tracks = playlist.find('li a');
    len = tracks.length - 1;
    audio[0].volume = .10;
    audio[0].play();
    playlist.find('a').click(function(e){
        e.preventDefault();
        link = $(this);
        current = link.parent().index();
        run(link, audio[0]);
    });
    audio[0].addEventListener('ended',function(e){
        current++;
        if(current == len){
            current = 0;
            link = playlist.find('a')[0];
        }else{
            link = playlist.find('a')[current];    
        }
        run($(link),audio[0]);
    });
}
function run(link, player){
        player.src = link.attr('href');
        par = link.parent();
        par.addClass('active').siblings().removeClass('active');
        audio[0].load();
        audio[0].play();
}
</script>
</head>
<body>
    <audio id="audio" preload="auto" tabindex="0" controls="" type="audio/mpeg">
        <source type="audio/mp3" src="http://www.archive.org/download/bolero_69/Bolero.mp3">
        Sorry, your browser does not support HTML5 audio.
    </audio>
    <ul id="playlist">
        <li class="active"><a href="http://www.archive.org/download/bolero_69/Bolero.mp3">Ravel Bolero</a></li>
        <li><a href="http://www.archive.org/download/MoonlightSonata_755/Beethoven-MoonlightSonata.mp3">Moonlight Sonata - Beethoven</a></li>
        <li><a href="http://www.archive.org/download/CanonInD_261/CanoninD.mp3">Canon in D Pachabel</a></li>
        <li><a href="http://www.archive.org/download/PatrikbkarlChamberSymph/PatrikbkarlChamberSymph_vbr_mp3.zip">patrikbkarl chamber symph</a></li>

    </ul>
</body>
</html>

最佳答案

脚本似乎失败了,因为您在加载 DOM 之前调用了 init(),因此您引用的元素不存在。如果您查看控制台,您会收到类似这样的错误:“无法将属性‘volume’设置为未定义”,因为在调用 init() 时音频元素不存在。 看起来您正在使用 jQuery,因此更改了“init();”这行应该有所帮助:

$(document).ready(function() {
  init();
});

关于javascript - 我的 mp3 链接被下载而不是在我的网络播放器上流式传输,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28090379/

相关文章:

javascript - 如何制作 Jquery 菜单生成器

具有绝对位置宽度问题的列表中的 Css 列表

javascript - 从两个数组中获取唯一值并将它们放入另一个数组中

javascript - 查找数组中最近的日期

javascript - 为什么在 jQuery 单击事件触发我的 es6 类函数之一后,我的其他类函数和变量变得未定义

javascript - 我如何从这个 vue.js 对象创建购物车

html - 是否可以在图像上使用半透明的前景色?

html - 带图标的CSS图片叠加效果

javascript - 使用socket.io时回调函数会阻塞主线程吗?

javascript - 如何在 JavaScript 中生成两个时间之间的时间戳?