简体   繁体   English

使用输入框更改HTML5音频源

[英]Changing HTML5 Audio source with Input box

Hi fellow stack users! 嗨,其他堆栈用户!

I am trying to create an audio player where you type the Source into an input box. 我正在尝试创建一个音频播放器,在其中将“源”键入到输入框中。 So far, I really like the way it is supposed to work, however instead of loading the file typed in, it just reloads the original file. 到目前为止,我真的很喜欢它的工作方式,但是与其加载键入的文件,不如直接加载原始文件。 Additionally, I'm sure it is recognising the file, because if I type in an invalid Source, the player does not load at all. 此外,我确定它可以识别该文件,因为如果键入无效的Source,则播放器将根本无法加载。

I might not be explaining it very well so I have prepared a JSFiddle, here: 我可能没有很好地解释它,所以我在这里准备了一个JSFiddle:

http://jsfiddle.net/zT3z2/ http://jsfiddle.net/zT3z2/

The two songs I have been using to test are: 我一直在测试的两首歌是:

HTML: HTML:

<input type="text" id="url" name="url" value="skye_boat_song.ogg" />
<br><br>

<audio id="sound1" preload="auto" src="http://www.jezra.net/audio/skye_boat_song.ogg"
autoplay controls></audio>
<div id="status">skye_boat_song.ogg | lorem ipsum</div>

JavaScript: JavaScript:

$('input#url').on('propertychange paste keyup', function () {

    var url = this.value;

    $("#status").html(url + " | lorem ipsum");
    changeAudio("http://jezra.net/audio/" + url);
});

function changeAudio(song) {
    audio = document.getElementById("sound1");
    audio.src = song;
    audio.load();
    audio.play();
}

$('input#url').keyup();

Here is a working fiddle that achieves what you're aiming for. 这是一个工作的小提琴,可以实现您的目标。

http://jsfiddle.net/newtriks/Fvh2x/ http://jsfiddle.net/newtriks/Fvh2x/

JS: JS:

// http://goo.gl/k3oDc
// http://goo.gl/Ei0iX

var audioElement = document.getElementsByTagName('audio')[0];
var inputElement = document.getElementsByTagName('input')[0];

$('input').keyup(function () {
    if (event.keyCode == 13) {
        loadAndPlay(inputElement.value);
    }
});

function loadAndPlay(src) {
    audioElement.pause();
    audioElement.src = src;
    audioElement.load();
    audioElement.play();
}

loadAndPlay(inputElement.value);

HTML: HTML:

<div>
    <audio controls></audio>
</div>
<div>
    <input type="text" value="http://goo.gl/k3oDc" />
</div>

Simon 西蒙

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM