Obtenir l'évenement de fin de redimensionnement d'une fenêtre

Signaler
Messages postés
33
Date d'inscription
vendredi 20 octobre 2000
Statut
Membre
Dernière intervention
28 octobre 2004
-
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
-
Bonjour,

Cela fait plusieurs jours que je penche là dessus pour savoir si il est possible d'obtenir l'évenement de fin de redimensionnement d'une fenêtre.

J'ai essayé avec la fonction resizeend du body... mais cela ne marche pas... et ce, même sous IE 6.0

Quelqu'un aurait-il un suggestion ?!?

D'avance merci...

Anthony

8 réponses

Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
32
Bonjour,
onresize="fonction();"
définition dans selfhtml.com.fr :
On utilise, pour la surveillance de la taille de la fenêtre le
gestionnaire d'événement onResize. Ce gestionnaire
d'événement entre en action quand l'utilisateur modifie la
taille de la fenêtre. Vous pouvez affecter une fonction, qui
est exécutée lors des modifications de taille, à ce
gestionnaire d'événement .
est-ce réellement en fin de resize ?
et est-ce si important ?
que faut-il faire de particulier ?
Cordialement Bul. [Site] [[mailto:marcel.Bultez@Tiscali.fr Mail]]
Messages postés
33
Date d'inscription
vendredi 20 octobre 2000
Statut
Membre
Dernière intervention
28 octobre 2004

Bon, je ne me suis pas bien expliqué à mon premier post. Bien entendu, cela va de soi que j'ai déjà essayé avec le onresize...

Mon problème est que je souhaiterais fixer la taille d'une fenetre dans la fonction du resize est le même. (et ce proportionnelement selon les dimensions initiales de la fenêtre.)

Le problème est qu'avec Onresize, j'ai un appel récursif à cette fonction lorsque je fais un setsizeto()... Jusque là vous allez me dire NORMAL... et je vous répond oui... du coup, j'ai essayé de me dépatouiller avec un boolean... et là, c'est le drame.... je comprend rien à ce qu'il se passe... Mon code a un comportement assez bizarre... Il rentre malgré tout dans le resize après avoir cependant forcé à un le boolean qui devrait m'empêcher de y aller...

Voici mon code... simplifié pour plus de clarté... C une fenêtre type pop up appelé d'une autre page... sans menu, sans task bar... sans scroll... juste contenant une applet...

<HTML>

<HEAD>

<TITLE>Resizable Applet Demo</TITLE>
</HEAD>


<SCRIPT LANGUAGE="JavaScript">
var normalWidth=0;
var normalHeight=0;
var bResizeWidth=new Boolean(true);

function start(){
normalWidth=document.body.clientWidth;
normalHeight=document.body.clientHeight;
resize();
}

window.onresize = function resize0() {
if(!bResizeWidth){
bResizeWidth=true;
}else {
bResizeWidth=false;
resize();
}
}

function resize(){
w_newWidth=document.body.clientWidth;
w_newHeight=document.body.clientHeight;

var ratio=w_newHeight/normalHeight;
document.myApplet.setSize(normalWidth*ratio,w_newHeight);
self.window.resizeTo(normalWidth*ratio,document.body.clientHeight);
</SCRIPT>

....myApplet



</HTML>

D'ou l'idée d'avoir le onresizeend... a priori il devrait marché selon la MSDN... (Cf. http://msdn.microsoft.com/library/default.asp?url=/workshop/author/dhtml/reference/objects/body.asp) mais niet... que dalle, ca ne veut pas... Il définit la fonction... mais le browser ne semble pas la connaitre et prtt je suis en IE 6.0

Si quelqu'un a quelconque suggestion, merci d'avance...

Anthony
Messages postés
33
Date d'inscription
vendredi 20 octobre 2000
Statut
Membre
Dernière intervention
28 octobre 2004

Le même code que précédement avec des commentaires pour illustrer le probleme... A faire fonctionner en lancant la page à partir d'un window.open... (nom de la page.html...)

<HTML>

<HEAD>

<TITLE>Resizable Applet Demo</TITLE>
</HEAD>


<SCRIPT LANGUAGE="JavaScript">
var normalWidth=0;
var normalHeight=0;
var bResizeWidth=new Boolean(true);

function start(){
normalWidth=document.body.clientWidth;
normalHeight=document.body.clientHeight;
resize();
}

window.onresize = function resize0() {
if(!bResizeWidth){
alert("PENDANT RESIZE -"+document.body.scrollWidth+" - "+document.body.clientHeight);
bResizeWidth=true;
}else {
bResizeWidth=false;
resize();
}
}

function resize(){
w_newWidth=document.body.clientWidth;
w_newHeight=document.body.clientHeight;

var ratio=w_newHeight/normalHeight;
alert("AVANT RESIZE -"+document.body.scrollWidth+" - "+document.body.clientHeight+" RATIO -> "+ratio);
<!-- document.myApplet.setSize(normalWidth*ratio,w_newHeight);-->
self.window.resizeTo(normalWidth*ratio,document.body.clientHeight);
alert("APRES RESIZE -"+document.body.scrollWidth+" - "+document.body.clientHeight+" RATIO -> "+ratio);
}
</SCRIPT>
<!--




-->



</HTML>
Messages postés
33
Date d'inscription
vendredi 20 octobre 2000
Statut
Membre
Dernière intervention
28 octobre 2004

Sorry... celui là plutot... :

<HTML>

<HEAD>

<TITLE>Resizable Applet Demo</TITLE>
</HEAD>


<SCRIPT LANGUAGE="JavaScript">
var normalWidth=0;
var normalHeight=0;
var bResizeWidth=new Boolean(true);

function start(){
normalWidth=document.body.clientWidth;
normalHeight=document.body.clientHeight;
resize();
}

window.onresize = function resize0() {
if(!bResizeWidth){
alert("PENDANT RESIZE -"+document.body.clientWidth+" - "+document.body.clientHeight);
bResizeWidth=true;
}else {
bResizeWidth=false;
resize();
}
}

function resize(){
w_newWidth=document.body.clientWidth;
w_newHeight=document.body.clientHeight;

var ratio=w_newHeight/normalHeight;
alert("AVANT RESIZE -"+document.body.clientWidth+" - "+document.body.clientHeight+" RATIO -> "+ratio);
document.myApplet.setSize(normalWidth*ratio,w_newHeight);
self.window.resizeTo(normalWidth*ratio,document.body.clientHeight);
alert("APRES RESIZE -"+document.body.clientWidth+" - "+document.body.clientHeight+" RATIO -> "+ratio);
}
</SCRIPT>








</HTML>
Messages postés
33
Date d'inscription
vendredi 20 octobre 2000
Statut
Membre
Dernière intervention
28 octobre 2004

Sorry... celui là plutot... :

<HTML>

<HEAD>

<TITLE>Resizable Applet Demo</TITLE>
</HEAD>


<SCRIPT LANGUAGE="JavaScript">
var normalWidth=0;
var normalHeight=0;
var bResizeWidth=new Boolean(true);

function start(){
normalWidth=document.body.clientWidth;
normalHeight=document.body.clientHeight;
resize();
}

window.onresize = function resize0() {
if(!bResizeWidth){
alert("PENDANT RESIZE -"+document.body.clientWidth+" - "+document.body.clientHeight);
bResizeWidth=true;
}else {
bResizeWidth=false;
resize();
}
}

function resize(){
w_newWidth=document.body.clientWidth;
w_newHeight=document.body.clientHeight;

var ratio=w_newHeight/normalHeight;
alert("AVANT RESIZE -"+document.body.clientWidth+" - "+document.body.clientHeight+" RATIO -> "+ratio);
<!--document.myApplet.setSize(normalWidth*ratio,w_newHeight);-->
self.window.resizeTo(normalWidth*ratio,document.body.clientHeight);
alert("APRES RESIZE -"+document.body.clientWidth+" - "+document.body.clientHeight+" RATIO -> "+ratio);
}
</SCRIPT>
<!--





-->


</HTML>
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
32
_alors déjà, ne pas appeller la fonction resize
mais redim par exemple, sinon boucle do
infernale.
_ window.onresize = function resize0() {
if(!bResizeWidth){ ...
ça ne vas pas : faire par exemple

ou window.onresize=redim(); pas sûr que
les ( ) soit à mettre.
puis
var variable_globale=false;
function redim()
{ if (!variable_globale)
{ variable_globale=true;
faire le travail ....
variable_globale=false; } }
Cordialement Bul. [Site] [[mailto:marcel.Bultez@Tiscali.fr Mail]]
Messages postés
33
Date d'inscription
vendredi 20 octobre 2000
Statut
Membre
Dernière intervention
28 octobre 2004

Ca ne fonctionne pas non plus...

Pourrais-tu essayer de ton côté s'il te plaît... (avec le code ci dessus...) ainsi tu pourrais mieux te rendre compte du comportement bizarre de ce code... avec les appels intempestifs de resize...

Merci d'avance de m'aider car là, je suis vraiment bloqué avec ce satané ggggggrrrrrrrrr... Cela m'enleverait vraiment une épine du pied...

Anthony
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
32
<HTML>
<HEAD>
<TITLE></TITLE>
<script type="text/javascript">
function redim()
{ if (!encours)
     {  encours=true;
        self.resizeTo(500,300);
        encours=false;    }   }
</script>
</HEAD>

<script type="text/javascript">
var encours=false;
window.onresize=redim;
</script>
</HTML>

fonctionne sans souci,
taille 500,300 pour exemple,
à adapter ....
Cordialement Bul. [Site] [[mailto:marcel.Bultez@Tiscali.fr Mail]]