Problème fenetre popup qui ne se ferme pas

Résolu
Jarod1980 Messages postés 273 Date d'inscription samedi 5 juillet 2003 Statut Membre Dernière intervention 31 mars 2015 - 24 avril 2007 à 12:16
Jarod1980 Messages postés 273 Date d'inscription samedi 5 juillet 2003 Statut Membre Dernière intervention 31 mars 2015 - 24 avril 2007 à 16:53
Bonjour,
Je suis en train de developper une application WYSIWYG. Dans mon application, je permet à l'utilisateur de changer la couleur de fond d'une cellule de son tableau. Lorsqu'il clique sur le bouton associé une popup s'ouvre où il peut choisir la couleur à appliquer. La couleur qu'il choisi s'applique bien à la cellule du tableau en cours mais le problème c'est que ma popup reste ouverte malgré la présence de window.close() à l'interieure de celle ci. Est ce que quelqu'un pourrait m'aider à résoudre ce problème.
Merci

Voici comment fonctionne mon programme :
ici c'est la fonction qui s'execute lorsque l'utilisateur clique sur le bouton changer couleur cellule :
function Multicolor(couleur) {
        var selection = document.selection.createRange();
        var cursor = document.selection.createRange();
        var table = cursor.parentElement();
  
  if (table.nodeName.toLowerCase() == "td") {
  showInputPage("test.htm",330,320);
  table.bgColor=couleur;
  }
  }
Dans ma popup, j'ai un bouton OK qui execute la fonction exit():
function exit() {
window.opener.Multicolor(document.form1.bColor.value);
window.close();
}

Jarod_Delaware

5 réponses

cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
24 avril 2007 à 16:41
je n'ai pas la fonction showinput page, mais en remplaçant par window.open.... ça baigne

    page mère :

<script type= "text/javascript">
function Multicolor(couleur) {
        var selection = document.selection.createRange();
        var cursor = document.selection.createRange();
        var table = cursor.parentElement();
 
  if (table.nodeName.toLowerCase() == "td") {
  window.open("test.htm",330,320);
  table.bgColor=couleur;
  } else{alert("Vous devez sélectionner une et une seule cellule à la fois");}
  }
</script>
exemple

aller

       test.htm

<script type ="text/javascript">
function modifyCellColor(){
window.opener.Multicolor(document.form1.bColor.value);
  window.close();
  }
</script>

<form name="form1" method="post" action="">

<select name="bColor">
            <option selected>None
<option style="background-color:#FF0000" value="#FF0000">#FF0000
<option style="background-color:#FFFF00" value="#FFFF00">#FFFF00
<option style="background-color:#00FF00" value="#00FF00">#00FF00
</select>

</form>

    donc... l'erreur est ailleurs ? mais j'ai du ajouter/changer des "choses" !

    mais j'évite les noms comme table, cursor,selection...
    déjà eu quelques soucis. certes pas dans les mêmes
       circonstances, mais c'est une précaution à prendre.

<hr />


Cordialement        Bul     [mon Site]     [M'écrire]



<hr />
3
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
24 avril 2007 à 14:02
Bonjour,

si window.opener.Multicolor(document.form1.bColor.value); se fait
aucune raison que window.close(); ne se fasse pas.
( même si j'éviterais des noms de fonctions comme exit. )
comme ça, à priori, je ne vois pas. 
( mais on n'a pas toujours l'oeil du tigre. )
il faudrait probablement nous en montrer un poil plus ?
y a -t-il un message d'erreur ?

et ( si ce n'est déjà fait ) :




|÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷|÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷|÷÷÷÷÷÷÷÷÷÷÷÷÷÷|
| Avec | et mieux : <label style="color: rgb(0, 128, 0);">Télécharger</label> |
|÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷|÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷|÷÷÷÷÷÷÷÷÷÷÷÷÷÷|
|<label style="color: rgb(128, 0, 0);">FireFox</label> |regarder la "console d'erreurs" | FireBug |
| | Outils / Console d'erreurs | |
|÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷|÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷|÷÷÷÷÷÷÷÷÷÷÷÷÷÷|
|<label style= "color: rgb(128, 0, 0);">Internet Explorer</label>|activer le deboggage : utils/options I le Debogger IE|
| | dans la liste, sous "Navigation" : décocher | |
| | ° Afficher une notification de chaque erreur de script | |
| | ° Désactiver le débogage de Scripts (autres applications)| |
| | ° Désactiver le débogage de Scripts (Internet Explorer) | |
|÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷|÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷÷|÷÷÷÷÷÷÷÷÷÷÷÷÷÷|







<hr />



Cordialement                Bul     [mon Site]     [=Bul M'écrire]



<hr />
0
Jarod1980 Messages postés 273 Date d'inscription samedi 5 juillet 2003 Statut Membre Dernière intervention 31 mars 2015 2
24 avril 2007 à 15:03
Salut,
Je n'ai aucune erreur lorsque j'exécute mon script, les modifications dans mon IE ont déjà été faites.
J'ai juste ma popup qui reste ouverte lorsque j'applique une couleur à une cellule de mon tableau.

Structure de mon programme :
Dans le programme principal : j'ai un bouton que j'ai appelé Changer couleur cellule et qui lance l'évènement
multicolor() lorsqu'on click dessus : onClick= "Multicolor();"

Ma fonction Multicolor(); verifie que l'on a bien sélectionné une balise td, si c'est le cas j'ouvre la page test.htm
qui est la page où l'on pourra choisir la couleur que l'on voudra affecter à la cellule du tableau.

function Multicolor(couleur) {
        var selection = document.selection.createRange();
        var cursor = document.selection.createRange();
        var table = cursor.parentElement();
  
  if (table.nodeName.toLowerCase() == "td") {
  showInputPage("test.htm",330,320);
  table.bgColor=couleur;
  } else{alert("Vous devez sélectionner une et une seule cellule à la fois");}
  }

Ma popup test.htm qui reste ouverte après avoir cliquer le bouton OK mais qui affecte bien la couleur choisie
à ma cellule.
test.htm :
<script>
function modifyCellColor(){
window.opener.Multicolor(document.form1.bColor.value);
  window.close();
  }
</script>
</head>



<form name ="form1" method="post" action="">

<select name="bColor">
            <option selected>None
<option style="background-color:#FF0000" value="#FF0000">#FF0000 
<option style="background-color:#FFFF00" value="#FFFF00">#FFFF00 
<option style="background-color:#00FF00" value="#00FF00">#00FF00
</select>

</form>

Jarod_Delaware
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
24 avril 2007 à 16:44
précision : avec IE.
createRange ne fonctionne qu'avec IE.
<hr />


Cordialement            Bul     [mon Site]     [M'écrire]



<hr />
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Jarod1980 Messages postés 273 Date d'inscription samedi 5 juillet 2003 Statut Membre Dernière intervention 31 mars 2015 2
24 avril 2007 à 16:53
Salut,
Effectivement en utilisant window.open ça marche nickel dans la page mère.
Le problème doit venir de ma fonction showInputPage pourtant c'est à peu près le même appel que
je fais avec ma fonction showInputPage.
En tout cas je te remerci beaucoup pour ton aide.
Je vais essayer de voir ce qui foire dans ma fonction
ShowInputPage.
Je mets mon code ma showInputPage ci dessous au cas où.

function showInputPage(url, width, height)
  {
 width=width+15;
 height=height+15;
 
 url="" + defaultPath + "popups/" + url + "";
    window.open(url,"","resizeable=no, scrollbars=yes, width=" + width + ", height=" + height + ", left=30, top=30, menu=no, status=yes");
  }






Jarod_Delaware
0
Rejoignez-nous