Window.close : permission refusée ? [Résolu]

nthanatos 5 Messages postés jeudi 12 juin 2003Date d'inscription 21 septembre 2006 Dernière intervention - 19 sept. 2006 à 12:47 - Dernière réponse : cs_bultez 13619 Messages postés jeudi 13 février 2003Date d'inscription 15 octobre 2013 Dernière intervention
- 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.
Afficher la suite 

11 réponses

Répondre au sujet
cs_bultez 13619 Messages postés jeudi 13 février 2003Date d'inscription 15 octobre 2013 Dernière intervention - 20 sept. 2006 à 14:51
+3
Utile
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 />
Cette réponse vous a-t-elle aidé ?  
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 - 19 sept. 2006 à 13:19
0
Utile
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 />
Commenter la réponse de cs_bultez
nthanatos 5 Messages postés jeudi 12 juin 2003Date d'inscription 21 septembre 2006 Dernière intervention - 19 sept. 2006 à 14:57
0
Utile
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 !!!
Commenter la réponse de nthanatos
cs_bultez 13619 Messages postés jeudi 13 février 2003Date d'inscription 15 octobre 2013 Dernière intervention - 19 sept. 2006 à 15:14
0
Utile
à 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 />
Commenter la réponse de cs_bultez
nthanatos 5 Messages postés jeudi 12 juin 2003Date d'inscription 21 septembre 2006 Dernière intervention - 19 sept. 2006 à 15:52
0
Utile
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
Commenter la réponse de nthanatos
cs_bultez 13619 Messages postés jeudi 13 février 2003Date d'inscription 15 octobre 2013 Dernière intervention - 20 sept. 2006 à 10:32
0
Utile
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 />
Commenter la réponse de cs_bultez
cs_roro06 732 Messages postés jeudi 2 janvier 2003Date d'inscription 29 octobre 2007 Dernière intervention - 20 sept. 2006 à 11:35
0
Utile
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
Commenter la réponse de cs_roro06
cs_roro06 732 Messages postés jeudi 2 janvier 2003Date d'inscription 29 octobre 2007 Dernière intervention - 20 sept. 2006 à 11:44
0
Utile
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
Commenter la réponse de cs_roro06
cs_roro06 732 Messages postés jeudi 2 janvier 2003Date d'inscription 29 octobre 2007 Dernière intervention - 20 sept. 2006 à 12:03
0
Utile
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
Commenter la réponse de cs_roro06
nthanatos 5 Messages postés jeudi 12 juin 2003Date d'inscription 21 septembre 2006 Dernière intervention - 21 sept. 2006 à 10:01
0
Utile
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 ;)
Commenter la réponse de nthanatos
cs_bultez 13619 Messages postés jeudi 13 février 2003Date d'inscription 15 octobre 2013 Dernière intervention - 21 sept. 2006 à 10:19
0
Utile
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 />
Commenter la réponse de cs_bultez

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.