【发布时间】:2018-07-08 03:40:27
【问题描述】:
我正在开发一个模态窗口,它允许用户1.) 粘贴视频网址或2.) 从本地驱动器中选择一个文件,然后使用 html5 预览 <video>tag。
选项 2.) 在本地选择视频文件效果很好。但是,当我在输入文本字段上粘贴 youtube 视频 url 时,视频播放器会显示一个加载指示器然后停止。您无法播放视频,并且似乎没有成功加载。
我检查了谷歌浏览器的检查器并收到了这条消息
跨域读取阻塞 (CORB) 阻止了跨域响应 https://www.youtube.com/... MIME 类型为 text/html。
我怀疑问题出在这一行。
$('#modalInput_pasteURL').on('input',function(e){
var videoUrl = $('#modalInput_pasteURL').val().trim();
$(".video").attr("src", videoUrl);
});
我在研究时读到,<iframe> 必须用于包含或播放来自 url 的 youtube 视频。在这种情况下,我只想使用<video> 标签,这样我就只有一个视频容器。
我错过了什么?有什么建议吗?
下面是sn-ps的代码
HTML 文件
<label>Paste Url here</label>
<input type="text" class="modal_inputbox" id="modalInput_pasteURL"/><br>
<label>Select Video</label>
<input type="file" class="modalbtn_browseFiles" id="modalBtn_choose_video_file" value="Browse Video" accept="video/*"/><br>
<label>Video Preview</label>
<div class="modalContainer_filePreview" id="modalContainer_videoPreview">
<video controls class="video" width="510" height="200">
</video >
</div>
JS 文件
$('#modalInput_pasteURL').on('input',function(e){
var videoUrl = $('#modalInput_pasteURL').val().trim();
$(".video").attr("src", videoUrl);
});
$("#modalBtn_choose_video_file").on('change',function(event){
var fileInput = document.getElementById('modalBtn_choose_video_file');
var fileUrl = window.URL.createObjectURL(fileInput.files[0]);
$(".video").attr("src", fileUrl);
});
谢谢。
【问题讨论】:
-
我不记得 YT 视频是由预编码的视频标签播放的。 YT API 使用 iframe
-
@zer00ne 没错,iframe 是最好的选择。我没有意识到这一点,因为我对做前端的东西还很陌生。感谢您的评论。它有帮助。
-
太好了,如果您希望看到您的代码被修改以便它可以播放两种类型的网址,请查看我的回答。
标签: javascript jquery html