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

lacouine Messages postés 33 Date d'inscription vendredi 20 octobre 2000 Statut Membre Dernière intervention 28 octobre 2004 - 1 juil. 2004 à 11:15
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 - 2 juil. 2004 à 10:27
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

cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
1 juil. 2004 à 12:03
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]]
0
lacouine Messages postés 33 Date d'inscription vendredi 20 octobre 2000 Statut Membre Dernière intervention 28 octobre 2004
1 juil. 2004 à 15:40
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
0
lacouine Messages postés 33 Date d'inscription vendredi 20 octobre 2000 Statut Membre Dernière intervention 28 octobre 2004
1 juil. 2004 à 15:54
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>
0
lacouine Messages postés 33 Date d'inscription vendredi 20 octobre 2000 Statut Membre Dernière intervention 28 octobre 2004
1 juil. 2004 à 15:56
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>
0

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

Posez votre question
lacouine Messages postés 33 Date d'inscription vendredi 20 octobre 2000 Statut Membre Dernière intervention 28 octobre 2004
1 juil. 2004 à 15:56
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>
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
1 juil. 2004 à 16:39
_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]]
0
lacouine Messages postés 33 Date d'inscription vendredi 20 octobre 2000 Statut Membre Dernière intervention 28 octobre 2004
2 juil. 2004 à 09:42
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
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
2 juil. 2004 à 10:27
<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]]
0
Rejoignez-nous