Bonjour à tous,

J'insère par javascript des vidéos dans un article, mais avant l'insertion j'aimerai vérifier l'existence de la ressource.
J'utilise pour cela : XMLHttpRequest
mais le readyState est toujours = 1 et non 4 alors que le fichier existe et sur le même domaine.

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
function addSourceToVideo(element, src, type) {
    var source = document.createElement('source');
    source.src = src;
    source.type = type;
	var request = new XMLHttpRequest();  
	request.open('GET', src, true);
	request.send(null);
	alert('src' + src + "readystate " + request.readyState + " - "+ request.status);	
	if (request.readyState == 4 && request.status == 200) {
		//element.appendChild(source);
 
	}
}
 
var src_video = document.getElementById("videourl").value;
addSourceToVideo(video, src_video+'.ogv', 'video/ogg');

Solution:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
function addSourceToVideo(element, src, type) {
    var source = document.createElement('source');
    source.src = src;
    source.type = type;
	var req = new XMLHttpRequest();
	req.open('GET', src, true);
	req.onreadystatechange = function (aEvt) {
		//dump(src + ' '+ req.responseText+ ' | req.readyState->'+ req.readyState + ' | req.status ->'+ req.status);
	  if (req.readyState == 4) {
	      if((req.status == 200)||(req.status == 206)){
		element.appendChild(source);
		presence_source = true;
	      } else {
		      alert("Erreur pendant le chargement de la page.\n");
		  }
	  }
	};
	req.send(null);
}
 
var src_video = document.getElementById("videourl").value;
 
 
addSourceToVideo(video, src_video+'.ogv', 'video/ogg');
addSourceToVideo(video, src_video+'.mp4', 'video/mp4');
addSourceToVideo(video, src_video+'.webm', 'video/webm');