Bonjour,

J'ai les 2 actions suivantes :

(1) Ajax: Sélection (JS) qui ouvre vers un traitement (php)
(2) JS : Téléchargement si (readyState(action1) = 4) => window.open(url de mon download)

Dans (2) je boucle dans une fonction sur readyState(action1) et j'y reste tant que readyState < 3 (pour anticiper un peu).

Tout fonctionne bien sauf que :
Quand le client lance 2 requêtes AJAX consécutives, son navigateur interprète la boucle comme une erreur potentielle du JS et jette un beau "Un script sur cette page est peut-être occupé ou ne répond plus", du fait du while dans le 3eme code ci-dessous (en bold red).

=> La question est :
- Peut on éviter ce message en forçant l'exécution (comment..) ?
ou bien
- faut il mettre une condition de sortie bidon du while pour faire plaisir au navigateur ?
ou encore
- traiter le cas aussi par une requête Ajax (ce qui me pose problème car ma page de download ne s'ouvre évidemment pas dans ce cas)
ou enfin :
- En cas de 2 requêtes Ajax consécutives, annuler la première ?

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
function Download() {
	PopUp('https://www/mondomain/pop_download.html', 'open', 'test', '200', '200', 'left', 'center', '6000', false);
	Sleep(1000);
	CheckSelectStatus();
	if (globale_js4) var newWindow = window.open( globale_js4 ) ;
	else		 alert ('Téléchargement non réalisé'); 
}
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
function Sleep(timeout_ms) {
setTimeout("Sleep()", timeout_ms);
}
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
function CheckSelectStatus() {
	var timeout = ( select_request.readyState == 0) ? 2000 : ( select_request.readyState == 1) ? 1000 : 500 ;
	
	// Boucle d'attente de la réception server:
	while ( select_request.readyState < 3 ) {
		setTimeout("CheckSelectStatus()", timeout);
	}
}