用户输入的音频流
Audio Stream by User Input
如果音频流不是硬编码的,并且用户可以自己输入流,我该如何设置?
这是我想做的事情,但还没想好怎么做。
代码:
https://jsfiddle.net/xnwr5jeq/6/
<audio controls>
<source src="" type="audio/mpeg">
</audio>
<div class="control">
<label class="label">Stream</label>
<input class="input" type="text" />
</div>
Image
首先,让我们把它做成一个表格。表单是封装输入框集合的标准方式。普通浏览器和屏幕阅读器都能很好地理解它们。
<form>
<label>
Stream
<input name="url" type="url" />
</label>
</form>
这与您的类似,但我做了一些更改:
<label>
元素需要包装它们所标记的内容,或者它们需要 for
属性。否则,它们不是很有用。
- 我删除了
label
class。您可以通过简单地使用 label
作为选择器来在 CSS 中设置样式而无需它。
- 我给
input
取了个名字,方便以后取值。
input
现在属于 url
类型。这有一些 built-in validation,如果浏览器不支持,将回退到常规 text
输入。
您的 audio
元素没问题,但让我们稍微修改一下:
<audio src=""></audio>
基本上,因为我们只从用户那里得到一个 URL,所以不需要子 source
元素。我们也不应该设置 type
因为我们不知道它会是什么。
现在,直接回答您的问题...我们使用 JavaScript 处理表单提交。
// Ensure the page is loaded before querying for elements to attach handlers to
document.addEventListener('DOMContentLoaded', (e) => {
// Get the form, add a submit handler
document.querySelector('form').addEventListener('submit', (e) => {
// Get the form values from the form that was just submitted
const formData = new FormData(e.target);
// Set the audio `src` attribute from the form's `url` field input value
document.querySelector('audio').src = formData.get('url');
// Prevent default form handling (which would reload the page, in this case)
e.preventDefault();
});
});
Fiddle: https://jsfiddle.net/xnwr5jeq/7/
如果音频流不是硬编码的,并且用户可以自己输入流,我该如何设置?
这是我想做的事情,但还没想好怎么做。
代码: https://jsfiddle.net/xnwr5jeq/6/
<audio controls>
<source src="" type="audio/mpeg">
</audio>
<div class="control">
<label class="label">Stream</label>
<input class="input" type="text" />
</div>
Image
首先,让我们把它做成一个表格。表单是封装输入框集合的标准方式。普通浏览器和屏幕阅读器都能很好地理解它们。
<form>
<label>
Stream
<input name="url" type="url" />
</label>
</form>
这与您的类似,但我做了一些更改:
<label>
元素需要包装它们所标记的内容,或者它们需要for
属性。否则,它们不是很有用。- 我删除了
label
class。您可以通过简单地使用label
作为选择器来在 CSS 中设置样式而无需它。 - 我给
input
取了个名字,方便以后取值。 input
现在属于url
类型。这有一些 built-in validation,如果浏览器不支持,将回退到常规text
输入。
您的 audio
元素没问题,但让我们稍微修改一下:
<audio src=""></audio>
基本上,因为我们只从用户那里得到一个 URL,所以不需要子 source
元素。我们也不应该设置 type
因为我们不知道它会是什么。
现在,直接回答您的问题...我们使用 JavaScript 处理表单提交。
// Ensure the page is loaded before querying for elements to attach handlers to
document.addEventListener('DOMContentLoaded', (e) => {
// Get the form, add a submit handler
document.querySelector('form').addEventListener('submit', (e) => {
// Get the form values from the form that was just submitted
const formData = new FormData(e.target);
// Set the audio `src` attribute from the form's `url` field input value
document.querySelector('audio').src = formData.get('url');
// Prevent default form handling (which would reload the page, in this case)
e.preventDefault();
});
});
Fiddle: https://jsfiddle.net/xnwr5jeq/7/