如果我有一个视频文件的URL,如何检测URL指向的资源是否有效并且在显示之前是否存在?我已经看到一些建议AJAX的答案,但我只知道AJAX发送和检索一些数据,而不是获取文件的状态是否存在.
例如,如果我有一个类似的URL http://www.example.com/video.mp4,我怎么能检查是否video.mp4存在并且可以检索还是不能检索?
你真的不需要ajax,只需要创建一个视频元素,看看它是否可以加载源代码
var video = document.createElement('video');
video.onload = function() {
alert('success, it exsist');
// show video element
}
video.onerror = function() {
alert('error, couldn\'t load');
// don't show video element
}
video.src = 'http://www.example.com/video.mp4';
Run Code Online (Sandbox Code Playgroud)
不同的浏览器播放不同的格式,检查文件是否可以在当前浏览器中播放,可以使用该canplaythrough事件
video.oncanplaythrough = function() {
alert("This file can be played in the current browser");
};
Run Code Online (Sandbox Code Playgroud)
如果文件在同一个域上,并且端口和协议匹配,则可以使用ajax执行HEAD请求并查看资源是否存在,但这不能跨域工作
var http = new XMLHttpRequest();
http.open('HEAD', '/folder/video.mp4');
http.onreadystatechange = function() {
if (this.readyState == this.DONE) {
if (this.status != 404) {
// resource exists
}
}
};
http.send();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3350 次 |
| 最近记录: |