Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

probleme window.close() et sp2

5 réponses
Avatar
moi
Bonjour

Nous testons notre apllication intranet sur sp2 et nous rencontrons un
probleme avec le window.close

Je m'explique :

soit une page 1
<html>
<head>
<script>
<%@ include file="/eredact/js/outils.js" %>
var idPopUp = "";
function closewindow() {
self.opener = this;
self.close();
}
function initPage(){
idPopUp=ouvrePopupCentre(540,768,'detaile',chemin);
}
closewindow();
</script>

</head>
<body onload='initPage();'>
</body>
</html>


-------------------------------------
Si ceux qui disent du mal de moi savaient exactement ce que je pense
d'eux , ils en diraient bien davantage.
Sacha Guitry





Re : window.close et sp2 Ajouter bru à mon carnet d'adresses
Rechercher les messages postés par bru
Expéditeur : bru (15 messages)
Date : Aujourd'hui à 17:22

Oups désolé j ai validé trop vite

Nous testons notre aplication intranet sur sp2 et nous rencontrons un
probleme avec le window.close

Je m'explique :

soit une page 1 definie comme ceci
***********************************
<html>
<head>
<script>
<%@ include file="/js/outils.js" %>
var idPopUp = "";
function closewindow() {
self.opener = this;
self.close();
}
function initPage(){
chemin =".......";
idPopUp=ouvrePopupCentre(540,768,'detaile',chemin);
}
closewindow();
</script>

</head>
<body onload='initPage();'>
</body>
</html>
*****************************************
ouvrePopupCentre() est definie dans outil.js, cette fonction fait un
window.open()

cette page ne fait qu ouvrir une autre page en popup et se ferme
la popup contient un formulaire.
une fois le formulaire validé on recharge la popup avec (en simplifiant)

<html>
<head>
<script>
function initPage(){
window.close;
}
</script>

</head>
<body onload='initPage();'>
</body>
</html>

ce qui a pour effet de la fermer

Avant sp2 aucun probleme depuis sp2 la pop up ne se referme plus, le
window.close est ignore

dans sp2 le blok popu à ete desactive

Merci

5 réponses

Avatar
ASM
Houlala ! voici que 'moi' nous en a ecrit toute une tartine :

probleme avec le window.close


bon, avant d's'farcir la totale

Rappel du(des) principe(s) :

ouvrir un pop-up

nom_de_la_fenetre = window.open(page_html,cible,attributs);

nom_de_la_fenetre : sert au JS pour manipuler la fenetre
- placer : nom_de_la_fenetre.moveTo(100,150);
- mouvoir : nom_de_la_fenetre.moveBy(0,10);
- redimensionner : nom_de_la_fenetre.resizeTo(400,350);
- passer derrière : nom_de_la_fenetre.blur();
- passer devant : nom_de_la_fenetre.focus();

- fermer (Ha !) : nom_de_la_fenetre.close();

cible : sert au html pour balancer des pages dans la fenêtre
<a href="machintruc.htm" target="cible">machin</a>
Le JS préférera localiser des urls dans la fenêtre directement
nom_de_la_fenetre.location.href = 'machintruc.htm';
sinon (à vérifier) :
top.cible.location.href = 'machintruc.htm';

attributs = taille, position et 'décoration' de la fenêtre
'width0,height0,left,top ,menubar=0/1,location=0/1,
scrollbars=1/0,status=1/0'
etc etc (indiquer : 0 = non, 1 = oui)

Tout l'appel de l'ouverture de la fenêtre doit être
- codé sur une seule ligne
- sans aucun espace dans ce code


---------- Ces révisions faites. --- Perso, moi j'aurais fait :

<script type="text/javascript"><!-- // merci d'indiquer que c'est du JS
<%@ include file="/js/outils.js" %>
var idPopUp = false;
function closewindow() {
if(!(idPopUp) || idPopUp.closed) '';
else idPopUp.close();
}
function initPage(){
chemin =".......";
idPopUp=ouvrePopupCentre(540,768,'detaile',chemin);
}
closewindow(); // si vous y tenez bien que ça ne serve t'à rien
// --></script>
<body onload='initPage();'>

ouvrePopupCentre() fait un window.open()


sans donner de nom à la nouvelle fenête ?
on laisse ça à initPage, si j'ai bien compris.

cette page ne fait qu ouvrir une autre page en popup et se ferme
la popup contient un formulaire.


Hein ? un popup qui en ouvre un autre ?
(et en plus il se ferme tout seul le 1er ?)
(et cette 1ière auto-fermeture fonctionne ?)

une fois le formulaire validé on recharge la popup avec (en simplifiant)


Je vois pas comment depuis la fenêtre mère on peut recharger ce pop-up
qui devrait lui être inconnu (le pop-up intermédiaire ayant été fermé)
Ha! c'est vrai ! (si j'ai compris) on a déjà euthanasié la fenêtre-mère !
ce serait donc un self-chargement.

<html>
<head>
<script>
function initPage(){ window.close; }
</script>
</head>
<body onload='initPage();'>
</body>
</html>

ce qui a pour effet de la fermer


à mon idée
ça ne devrait pas se faire sans au moins
un message de râlerie/avertissement du navigateur

Avant sp2 aucun probleme depuis sp2 la pop up ne se referme plus, le
window.close est ignore


Ha! Enfin ! IE+Windows se décident à un peu + de rigueur ?

Seule la fenêtre-mère a le droit de fermer une fenêtre fille
(ou petite-fille si la fille n'est pas morte)
Il arrive (suivant le navigateur) que la fille puisse s'auto-fermer
à la seule et unique condition
que sa mêre n'ait pas, elle aussi, été fermée.

Ici on en est au moins à la 2ième génération
de surcroit on l'a rendue orpheline
Le navigateur, dans sa gde bonté, ne veut pas de cet holocauste

Revoir la notion fermer une fenêtre donnée + haut

à la rigueur (sans aucune garantie, vue l'écatombe préliminaire)
tenter ceci dans la petite-fille :
On va dire à la fenêtre-grand-mère de fermer sa petite-fille idPopUp
elle-même fille de idPopUp (quel caffouillage !)
(ce serait mieux que la fille n'ait pas disparu et qu'elle porte un autre nom)
(on se demande pourquoi il faut chaîner ainsi l'ouvertures de pop-ups)
(pourquoi faire simple quand on peut compliquer à loisir. hein?)

function initPage() { opener.opener.idPopUp.idPopUp.close(); }

ou

function initPage() { opener.idPopUp.close(); }

ou (fermer la fille et la petite-fille)

function initPage() {
setTimeout('opener.idPopUp.close()',200);
opener.opener.idPopUp.idPopUp.close();
}


Enfin, et pour résumer,
je n'aurais pas fait comme ça.
Pour ne pas perdre le fil vers les pop-ups-fils (ou fenetres-files)
1) toutes les fonctions sont dans la fenêtre-mère
2) tous les pop-ups ne savent que faire agir les fonction de la mêre

et donc la mère

1) ouvre le pop-up en le nommant, y fait charger le formulaire
2) la validation du formulaire
envoie ds le pop-up (en self) une page qui va demander
à la fenêtre-mère de fermer sa fille

Le navigateur est content : la mêre (source de tte vie) est touj là.


Tout sur les fenêtres et pop-ups :

http://perso.wanadoo.fr/stephane.moriaux/internet/web_html/java/fenetr/


--
******** (enlever/remove [OTER_MOI] du/from reply url) *******
Stéphane MORIAUX : mailto:
Aide aux Pages Perso (images & couleurs, formulaire, CHP, JS)
http://perso.wanadoo.fr/stephane.moriaux/internet/
**************************************************************

Avatar
moi
Houlala ! voici que 'moi' nous en a ecrit toute une tartine :

probleme avec le window.close





Bien,

Tout d'abord merci de vous pencher sur mon probleme.
Je crains m'etre mal expliqué, je vais vous donner plus de détail.

la premiere page que nous nommerons mere à pour seul et unique but
d'ouvrir un popup avec window.open que nous appelerons fille (en realite
la fenetre mere est ouverte à partir d'une autre application qui lance
iexplore de facon invisible, resultat on ne voit que la popup d'afficher)

Donc pour recapitule L'application propose de cliquer sur un lien qui
lance ie avec la page mere en invisible qui fait un window.open de la
fenetre fille. Resultat, visuellement on a un ie qui s'ouvre
directement en popup.

La popup fille contient un formulaire, on submit se formulaire le
serveur fait ses traitements (en java) et redirige dans la popup fille
une page html qui en simplifiant ressemble a ceci
<html>
<head>
<script>
function initPage(){ window.close; }
</script>
</head>
<body onload='initPage();'>
</body>
</html>
ce qui a pour but de la fermer la dite popup et de rendre la main à
l'application.

Voila

Avant SP2 ca marche, apres SP2 ca marche plus

MErci


Avatar
Cenekemoi
(...)
function initPage(){ window.close; }


Je pense plutôt que tu as fait une erreur de transcription, mais je le
dis quand même : "close" est une *méthode* de l'objet window, donc il
faut écrire :

window.close();

avec les parenthèses.

--
Cordialement, Thierry ;-)

Avatar
moi

(...)
function initPage(){ window.close; }



Je pense plutôt que tu as fait une erreur de transcription, mais je le
dis quand même : "close" est une *méthode* de l'objet window, donc il
faut écrire :

window.close();

avec les parenthèses.



Oui c est bien une erreur de transcription,
merci


Avatar
ASM

Avant SP2 ca marche, apres SP2 ca marche plus


Avant SP2 c'était buggué
après SP2, semblerait que non
(à moins que ce ne soit ce qu'a dit Thierry)

Le nouveau comportement (ne pas accepter sans alarme de fermer un pop-up orphelin)
EST le comportement NORMAL sur un serveur

(se re-pencher sur mon post long)

En local (sans connexion au net)
window.close();
ou
self.close();
fonctionne (+ ou -) sur une fenetre orpheline


--
******** (enlever/remove [OTER_MOI] du/from reply url) *******
Stéphane MORIAUX : mailto:
Aide aux Pages Perso (images & couleurs, formulaire, CHP, JS)
http://perso.wanadoo.fr/stephane.moriaux/internet/
**************************************************************