[javascript]popup avec setTimeout : ça se close() pas

popup avec setTimeout : ça se close() pas [javascript] - HTML/CSS - Programmation

Marsh Posté le 11-09-2005 à 20:38:34    

Salut à tous.
Je me tourne vers vous car je ne trouve plus comment pallier à ce problème.
 
tout d'abord j'explique.
C'est un pote qui veut que sa popup se ferme quand on quitte son site.
j'ai adapté son code pour tester périodiquement si la fenetre appelante est fermée ou si l'hostname de son adresse n'est plus celui de son site.
probleme le test semble fonctionner mais ça ne se ferme pas.
2eme probleme j'ignore quel est le meilleur timing pour mes tests.
 
le code actuel ci-joint

Code :
  1. <SCRIPT LANGUAGE="JavaScript">
  2. function PopupImage(img) {
  3. titre=":: ZOOM ::";
  4. w=open("",'image','top='+(screen.availHeight/2-200)+',left='+(screen.availWidth/2-200)+',width=350,height=400,toolbar=no,scrollbars=no,resizable=no');
  5. w.document.write("<HTML><HEAD><TITLE>"+titre+"</TITLE></HEAD>" );
  6. w.document.write("<SCRIPT language=javascript>function checksize()  { if (document.images[0].complete) {  window.resizeTo(document.images[0].width+5,document.images[0].height+30); window.focus(); /* ici je lance mon test */ isparentexist(); } else { setTimeout('check()',250) } }\n" );
  7. /* portion de code qui vous intéresse */
  8. w.document.write("function isparentexist() { "
  9.    +"if(!window.opener) { /* ici demande de fermeture */ /*clearTimeout(fermepas);*/ setTimeout('window.close()', 3000); } "
  10.    +"else if(window.opener.location.hostname!='************.free.fr') { /* ici demande de fermeture */ /*clearTimeout(fermepas);*/ setTimeout('window.close()', 3000);  }"
  11.    +"else { alert('ok - '+window.opener.location.href+' - '+window.opener+' - '+window.opener.location.hostname); fermepas= setTimeout('isparentexist()',1000); }"
  12.   +"} </"+"SCRIPT>" );
  13. /* fin de portion de code qui vous intéresse */
  14. w.document.write("<BODY onload='checksize()' oncontextmenu='return true' ondragstart='return false' onselectstart='return false' leftMargin=0 topMargin=0 marginwidth=0 marginheight=0><meta http-equiv=imagetoolbar content=no /><a href='#' onClick='window.close()'><IMG src='"+img+"' border=0'>" );
  15. w.document.write("</BODY></HTML>" );
  16. w.document.close();
  17. }
  18. PopupImage('http://************.free.fr/upload/134956683.gif');
  19. </SCRIPT>


voilà, si vous pouvez me filer un coup de main, c'est pas de refus. [:and garfunkel]

Reply

Marsh Posté le 11-09-2005 à 20:38:34   

Reply

Marsh Posté le 11-09-2005 à 23:11:53    

Dis, t'aurais pas plus moche comme code ? [:johneh]

Reply

Marsh Posté le 11-09-2005 à 23:12:17    

C'est une vrai catastrophe... Tout ce qu'il ne faut pas faire a été fait...

Reply

Marsh Posté le 11-09-2005 à 23:20:14    

en quoi il est catastrophique ?
le PopupImage semble etre repiqué (j'ai vu le meme code en visitant les topics). les evenement bloquant l'image zoomée sont de son fait. j'ai beau lui dire que c'est inutile, il n'en demord pas. il m'a meme demandé tout a l'heure de lui bloquer l'imprim ecran, c'est dire.
 
le bout de code que j'ai pondu présente quels defauts ?
est-ce qu'il y a un moyen d'obtenir la meme finalité par un biais plus simple ?
merci

Reply

Marsh Posté le 12-09-2005 à 10:11:10    

rend ton code Javascript Externe à la popup appelée. En gros tu fais appel à un .JS
 
et utilise setInterval qui m'a l'air plus propice pour ton code de merde

Reply

Marsh Posté le 12-09-2005 à 10:12:06    

close() est soumis à autorisation selon les navigateurs il me semble ... ( dumoins sous ffox )


Message édité par 0x90 le 12-09-2005 à 10:12:40

---------------
Me: Django Localization, Yogo Puzzle, Chrome Grapher, C++ Signals, Brainf*ck.
Reply

Marsh Posté le 12-09-2005 à 10:21:24    

0x90 a écrit :

close() est soumis à autorisation selon les navigateurs il me semble ... ( dumoins sous ffox )


close() ne fonctionne que si la popup qui est ouverte a été appelée par script (sous FF) sous IE elle peut etre fermée naturellement.

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed