11548 sujets

JavaScript, DOM et API Web HTML5

Bonjour à tous,

J'ai une page principale contenant un formulaire avec différents menus déroulants (listboxes); à côté de chacun de ces menus déroulants, un bouton javascript ouvre un popup, au sein duquel on peut rentrer une nouvelle valeur (enregistrée dans une base mysql); on clique ensuite sur un bouton "ok", qui ferme automatiquement la fenetre popup et rafraichit dynamiquement le menu déroulant (la nouvelle valeur est ajoutée) de la page appelante située en arrière-plan.

Pour cela, j'utilise la technologie Ajax (et donc la fonction XMLHttpRequest) dans un fichier javascript de la page du popup.

Problème, la fenêtre se ferme bien et directement sur Internet Explorer 6, mais pas sur FireFox; sur ce dernier il faut cliquer (n'importe où sur la fenêtre !!!, comme si un calcul était encore en cours) pour fermer le popup. le reste (rafraichissement) marche parfaitement.

Lorsque je n'utilise pas Ajax, la fenêtre se ferme correctement.

Quelqu'un aurait-il des pistes pour m'aider ?

Voici des extraits de mon code:

Sur la page principale, un classique, quelque chose comme:
---------------------------------------------------------
InsertLink = Window.open('inc_all.php?id=......, "width=650,height=400,scrollbars=yes,resizable=yes");


Sur la page ouverte (popup) par cette fonction:
------------------------------------------------
<input type="button" value="cc" onClick="return selectOnClick(<?php echo $id_table_parent; ?>,<?php echo $id_fiche_parent; ?>);"/>


($id_table_parent et $id_fiche_parent sont en gros récupérés en GET)


et enfin, dans une page.js incluse:
-----------------------------------

/* The following function creates an XMLHttpRequest object... */
var W3CDOM = (document.createElement && document.getElementsByTagName);
window.onload = init;

function selectOnClick(id_table_parent,id_fiche_parent){
	obtenirSelection(id_table_parent,id_fiche_parent);
}

//--------------------------------------------------------
// FONCTIONS DE GESTION de l'objet XMLhttpRequest
//--------------------------------------------------------
function createRequestObject(){
	var request_o; //declare the variable to hold the object.
	var browser = navigator.appName; //find the browser name
	if(browser == "Microsoft Internet Explorer"){
		/* Create the object using MSIE's method */
		request_o = new ActiveXObject("Microsoft.XMLHTTP");
	}else{
		/* Create the object using other browser's method */
		request_o = new XMLHttpRequest();
	}
	return request_o; //return the object
}
var http = createRequestObject();

// la page 'page_exemple_bdd.php' renvoie un id en réponse
function obtenirSelection(id_table_parent,id_fiche_parent){
	http.open('get', 'page_exemple_bdd.php?id_table=' + id_table_parent + '&id_fiche=' + id_fiche_parent);
	http.onreadystatechange = handleProducts; 
	http.send(null);
}

function handleProducts(){
	if(http.readyState == 4){ //Finished loading the response
		var response = http.responseText;
		window.opener.insertHTML(response);
		window.close();
		return true;
	}

}


PS: même en connaissant le nom du popup, et en le spécifiant, c'est le même résultat.

voilà, merci d'avance.....