Problème fenetre popup qui ne se ferme pas [Résolu]

Jarod1980 273 Messages postés samedi 5 juillet 2003Date d'inscription 31 mars 2015 Dernière intervention - 24 avril 2007 à 12:16 - Dernière réponse : Jarod1980 273 Messages postés samedi 5 juillet 2003Date d'inscription 31 mars 2015 Dernière intervention
- 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
Afficher la suite 

Votre réponse

5 réponses

Meilleure réponse
cs_bultez 13619 Messages postés jeudi 13 février 2003Date d'inscription 15 octobre 2013 Dernière intervention - 24 avril 2007 à 16:41
3
Merci
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 />

Merci cs_bultez 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 72 internautes ce mois-ci

Commenter la réponse de cs_bultez
cs_bultez 13619 Messages postés jeudi 13 février 2003Date d'inscription 15 octobre 2013 Dernière intervention - 24 avril 2007 à 14:02
0
Merci
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 />
Commenter la réponse de cs_bultez
Jarod1980 273 Messages postés samedi 5 juillet 2003Date d'inscription 31 mars 2015 Dernière intervention - 24 avril 2007 à 15:03
0
Merci
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
Commenter la réponse de Jarod1980
cs_bultez 13619 Messages postés jeudi 13 février 2003Date d'inscription 15 octobre 2013 Dernière intervention - 24 avril 2007 à 16:44
0
Merci
précision : avec IE.
createRange ne fonctionne qu'avec IE.
<hr />


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



<hr />
Commenter la réponse de cs_bultez
Jarod1980 273 Messages postés samedi 5 juillet 2003Date d'inscription 31 mars 2015 Dernière intervention - 24 avril 2007 à 16:53
0
Merci
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
Commenter la réponse de Jarod1980

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.