Window.close : permission refusée ?

Résolu
nthanatos Messages postés 5 Date d'inscription jeudi 12 juin 2003 Statut Membre Dernière intervention 21 septembre 2006 - 19 sept. 2006 à 12:47
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 - 21 sept. 2006 à 10:19
Bonjour,

j'ai un soucis avec mon code, j'ouvre une fenetre popup (fun1()) puis
je cherche a detecter quand l'utilisateur l'a referme (fun2()). Lorsque
lutilisateur ferme la fenetre j'ai un message d'erreur sur IE :
Permission Refusée sur la ligne : if(fenetre && fenetre.closed)

Voila une partie de mon code :

var fenetre ;
var fenetreTimer;

function fun2 (doDrop)
{
/* detecte si l'utilisateur a fermé la fenetre */
if (fenetre && fenetre.closed)
{
/* code */
window.clearInterval (gPTO_PartListTimer) ;
}
}

function Fun1 (doDrop)
{
var location = 'url.asp' ;

fenetre = window.open (location, "Mon nom", "status=0,width=640px,height=300px,resizable=1,scrollbars=1") ;

if (doDrop != 'False')
fenetreTimer = window.setInterval ("Fun2 ('True')", 100);
else
fenetreTimer = window.setInterval ("Fun2 ('False')", 100);

}

<!-- END TEMPLATE: bbcode_code -->

Si vous avez des idées pour résoudre mon problème vous êtes les bienvenus

Merci.

11 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
20 sept. 2006 à 14:51
et .... en relisant la question initiale ...
>>j'ouvre une fenetre popup puis je cherche a detecter quand l'utilisateur l'a referme
pourquoi ne pas "prévenir" la page mère lorsque le pop-up se ferme ?
du style dans le pop-up :

            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
19 sept. 2006 à 13:19
bonjour,

   sans préjuger du reste :

      le 2ème paramètre pour window.open, avec IE, ne doit comporter
            ni caractères spéciaux, ni espace "Mon nom"

      où est défini gPTO_PartListTimer ?
<hr />
      cordialement   Bul    
mon Site
    
M'écrire

<hr />
0
nthanatos Messages postés 5 Date d'inscription jeudi 12 juin 2003 Statut Membre Dernière intervention 21 septembre 2006
19 sept. 2006 à 14:57
Merci pour cette réponse !

Après le copier coller de mon code j'ai simplement renomé mes variables
pour que celui ci soit plus clair (finalement ce n'est pas vraiment le
cas :s )

En effet, "Mon nom" ne comporte pas d'espace et gPTO_PartListTimer =
fenetreTimer ! ainsi que le nom de la fonction fun2 une fois avec
Majuscule et puis minuscule .

Escuser moi pour cette médiocre transcription qui a dû vous géner.
cependant j'ai toujour mon erreur, Je commence a me demander si il n'y a pas un problème avec la configuration de mon serveur, J'utilise windows 2003 server, mais je ne vois pas ce que ça peut être. je suis vraiment dans le flou la !!!
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
19 sept. 2006 à 15:14
à priori pas grand chose à voir avec le serveur....
le javascript/html se déroule sur le micro du client.
un petit extrait de la page ( celle chez le client, pas le php,asp... ou autre ! )
   pour voir ce qui ne fonctionne pas, aiderait probablement pour chercher/répondre.
<hr />
            cordialement   Bul    mon Site    M'écrire<hr />
0

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

Posez votre question
nthanatos Messages postés 5 Date d'inscription jeudi 12 juin 2003 Statut Membre Dernière intervention 21 septembre 2006
19 sept. 2006 à 15:52
Je vais essayer de donner un extrait le plus complet possible de la page du client  :
<html ...>
<head>

<script type= "text/JavaScript">
<!--
....
//-->
</script>
</head>

<form id="SubmitForm" name="SubmitForm" method="post" action="#">
<td class="DataName" width="35%">
 Choix document
</td>
<td class ="CellWithNoBorder">
<SCRIPT type="text/javascript">
<!--
...
function PollPartList (doDrop)
{
if (!gPTO_PartListWnd_test || gPTO_PartListWnd_test.closed) {
var form = parent.frames ["PackageForm"].document.forms [0] ;
var guid = "OTI;" + gPTO_SearchPartDef + ";" + form.elements [gPTO_SearchFieldId].value ;

if (gPTO_SearchWasSelect) {
var cbo = form.elements ["CBO_" + gPTO_SearchFieldId] ;
var i, newidx ;
for (i = 0 ; i < cbo.options.length ; i++) {
if (cbo.options [i].value == guid) {
newidx = i ;
break ;
}
}
cbo.selectedIndex = newidx ;
}
window.clearInterval (gPTO_PartListTimer) ;
UpdatePTODropFields (gPTO_SystemId, gPTO_ResourceId, guid, doDrop) ;
}
}

/*
* Displays the part list window.
*/
function PopupPartList (sysid, resid, sessid, fieldid, partdef, isselect, doDrop)
{
var location = "http://srvadvitium/Advitium/" + "OpenPTO.asp?";
location = location + "SystemId={1DF04761-2CE1-4DCB-9005-AEDFFE2E3233}";
location = location + "&ResourceId={F6168319-B6A5-450A-837E-B30626D8127E}";
location = location + "&SessionId={C6AA94E4-72C3-4789-A6AA-A473A95E4C02}" ;
location = location + "&Entity=Part&EntityDefGUID=OTD;" + EncodeString (partdef);
location = location + "&FieldId=" + EncodeString (fieldid) + "&IsMulti=0&IsId=1" ;

gPTO_SystemId = sysid ;
gPTO_ResourceId = resid ;

gPTO_SearchFieldId = fieldid ;
gPTO_SearchPartDef = partdef ;gPTO_SearchWasSelect (isselect "SELECT") ;

gPTO_PartListWnd_test = window.open (location, "PTO", "status=0,width=640px,height=300px,resizable=1,scrollbars=1") ;
if (doDrop != 'False')
gPTO_PartListTimer = window.setInterval ("PollPartList ('True')", 100);
else
gPTO_PartListTimer = window.setInterval ("PollPartList ('False')", 100);

}
...
//-->
</SCRIPT>
,

</html>
Je ne sais pas si ça va etre utile! on retrouve la fonction fun1 PopupPartList et fun2
PollPartList
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
20 sept. 2006 à 10:32
illisible , tout est sur une ligne !
... mais en simplifiant à l'extrême :

<SCRIPT type="text/javascript"><!--
var gPTO_PartListTimer,gPTO_PartListWnd_test;



function PollPartList (doDrop)

 if (!gPTO_PartListWnd_test || gPTO_PartListWnd_test.closed)
 { alert("ok");
  window.clearInterval(gPTO_PartListTimer);  
 }
}



function PopupPartList (doDrop)

 gPTO_PartListWnd_test = window.open ("", "PTO", "status=0,width=640px,height=300px,resizable=1,scrollbars=1") ;  if (doDrop !'False')  gPTO_PartListTimer window.setInterval ("PollPartList ('True')", 100); 
 else       gPTO_PartListTimer = window.setInterval ("PollPartList ('False')", 100);
}
//--><!--pas de .., car erreur de syntaxe en javascript -->
</SCRIPT>

pas d'erreurs, ok affiché





<hr />
            cordialement   Bul    mon Site    M'écrire<hr />
0
cs_roro06 Messages postés 732 Date d'inscription jeudi 2 janvier 2003 Statut Membre Dernière intervention 29 octobre 2007
20 sept. 2006 à 11:35
Bonjour




Perrsonnellement, je ne connais pas la propriété closed. le simple test de fenetre devrait suffire : if (fenetre) etc...

exemple :
<script language="JavaScript" type="text/JavaScript">
var bid;
function test()
    {
    if (bid)
        alert("fenetre ouverte");
    else
        alert("fenetre fermée");
   
    }
</script>

open
test

Cordialement
Roro webDev
0
cs_roro06 Messages postés 732 Date d'inscription jeudi 2 janvier 2003 Statut Membre Dernière intervention 29 octobre 2007
20 sept. 2006 à 11:44
Bonjour




OOPS !!
2 idioties sur le même post, ça fait beaucoup ! au temps pour moi !

Non seulement la propriété closed existe bien, mais l'exemple ci-dessous fonctionne :


<script language="JavaScript" type="text/JavaScript">
var bid;
function test()
    {
    if (bid && !bid.closed)
        alert("fenetre ouverte");
    else
        alert("fenetre fermée");
   
    }
</script>

open
test



Cordialement
Roro webDev
0
cs_roro06 Messages postés 732 Date d'inscription jeudi 2 janvier 2003 Statut Membre Dernière intervention 29 octobre 2007
20 sept. 2006 à 12:03
Bonjour






Difficile de déterminer d'où provient l'erreur, car l'extrait que tu donnes est très incomplet, mais dans un premier temps, j'éviterais de donner aux variables des noms "connus" de javascript, comme "form", "location" et j'en passe
gPTO_PartListTimer
est-elle bien déclarée en global ?

Cordialement
Roro webDev
0
nthanatos Messages postés 5 Date d'inscription jeudi 12 juin 2003 Statut Membre Dernière intervention 21 septembre 2006
21 sept. 2006 à 10:01
Super merci pour toutes ces réponses ! la dernière de bultez est super
:D (il suffisait d'y penser) Entre temps j'avais "résolu" mon problème de manière un peu bâtarde,



en faisant un try...catch autour de la l'appel de la fonction closed
puisque si la fonction planter c'est que ma fenêtre était fermée !


Merci encore a tous ;)
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
21 sept. 2006 à 10:19
Bonjour,
   ouais... pour le try catch...
   ce qui prouve simplement qu'il y a une erreur !
   on ne doit donc pas "tout avoir", car sur ce qui est montré, 
         et en élaguant pour tester : ça baigne !
<hr />
            Cordialement    Bul    [mon Site]    [M'écrire]
<hr />
0
Rejoignez-nous