Redimenssionnement proportionnel 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
33
Date d'inscription
vendredi 20 octobre 2000
Statut
Membre
Dernière intervention
28 octobre 2004
-
Bonjour,

Mon problème est simple mais à la fois compliqué... Cela fait 2 jours que je planche dessus sans pouvoir la parade. Si quelqu'un pouvait m'aider, je lui en serais reconnaissant.

Voila. Je lance une applet dans une nouvelle fenêtre (style pop up). Cette fenêtre est resizable. Lorsque je la redimenssionne manuellement, je redimenssionne mes controles dans mon applet (interaction javascript - java).

Cependant, j'obtiens mon ratio de redimenssionnement par le rapport de la hauteur initial de l'applet à la largeur fixée par la souris. Malheureusement, ne faisant rien du point de vue de la longueur, rien ne se passe lorsque je redimenssionne horzyzontalement. Or moi, je voudrais également redimenssionner ma fenêtre avec le même ratio ave la largeur initiale sur la longueur.

NB : Le problème est que je veux faire cette action sur la fonction RESIZE dans le javascript... Et par conséquent cela entraine un resize perpétuel... (Appel récursif) Et ça c'est très très bad...

Est-ce que quelqu'un pourrait me donner une petite astuce éventuellement, ce serait très sympa ?!? Chuss...

Voici mon code de la fenêtre de l'applet (ouverte en mode resizable sans les scrollbars) :

<HTML>

<HEAD>

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

<SCRIPT LANGUAGE="JavaScript">
var normalWidth=0;
var normalHeight=0;

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

function resize() {
var w_newWidth,w_newHeight;
var w_maxWidth=1600, w_maxHeight=1200;
if (navigator.appName.indexOf("Microsoft") != -1){
w_newWidth=document.body.clientWidth;
w_newHeight=document.body.clientHeight;
}else{
var netscapeScrollWidth=15;
w_newWidth=window.innerWidth-netscapeScrollWidth;
w_newHeight=window.innerHeight-netscapeScrollWidth;
}

if (w_newWidth>w_maxWidth)
w_newWidth=w_maxWidth;
if (w_newHeight>w_maxHeight)
w_newHeight=w_maxHeight;

var ratio=w_newHeight/normalHeight;

if(ratio==1) return;

// if(document.body.clientWidth!=ratio*normalWidth) {
self.window.resizeTo(normalWidth*ratio,w_newHeight);
document.myApplet.setSize(normalWidth*ratio,w_newHeight);
alert(ratio);

window.scroll(0,0);
}

window.onResize = resize;
window.onLoad = resize;
/*
if (document.all) {
x=document.body.scrollWidth;
ww=(x<(screen.width-step) && x>ww) ? x : ww;
x=document.body.scrollHeight;
hh=(x<(screen.height-step) && x>hh) ? x : hh;
redim();
}else if (document.layers) {
ww=(document.width>ww) ? (document.width+10):ww;
hh=(document.height>hh) ? (document.height+10):hh;
setTimeout("self.window.resizeTo(ww,hh);",100);
}*/

</SCRIPT>







</HTML>

Merci d'avance pour vos réponses... :-)

Anthony

7 réponses

Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
32
Bonjour, si j'ai compris :
<head>
<script type="text/javascript">
var ok=true;
function nvdim()
{ if (ok)
 { ok=false;
   window.resizeTo(600,500);
   ok=true;  }  }
</script>   
</HEAD>


tailles fixes pour l'exemple.
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

Merci. C'est juste ce que j'essaie de faire en ce moment.... ;-) Les grands esprits se rencontrent... n'est-ce pas !!!! lol

Si y avait une soluc' un peu plus élégante, ce serait cool...

Mais je vous tiens au courant si ça marche. :-)

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

Merci. C'est juste ce que j'essaie de faire en ce moment.... ;-) Les grands esprits se rencontrent... n'est-ce pas !!!! lol

Si y avait une soluc' un peu plus élégante, ce serait cool...

Mais je vous tiens au courant si ça marche. :-)

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

Bon.... je reviens cette fois-ci car je n'arrive pas à dévelloper une solution correcte et ce même avec un boolean de vérification...

Il semble qu'il y ait plusieurs demande de resize qui sont fait... Quelqu'un pourrait-il essayer de faire ce petit code de redimenssionnement...

Je rappelle que je souhaite juste redimenssionner la longueur d'une fenêtre lorsque celle ci a été redimenssionnée justement (suivant la largeur ou la hauteur). Le redimenssionnement se fait selon un ratio qui se calcule avec les dimenssionns initials....

Cf. Code ci-dessus... Merci de m'aider car là, je suis vraiment dans la panade...

Bonne continuation au forum...

Merci d'avance.

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

Bultez,

Si tu exécutes ce code, tu verras que cela ne correspond pas a ce que je veux faire...

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">

<html>
<head>
<script type="text/javascript">
var ok=true;
var i=0;
function nvdim()
{i=i+10;
if (ok)
{ ok=false;
window.resizeTo(600,500-i);
ok=true; } }
</script>
</HEAD>

</html>

Il y a un appel récursif qui est fait malgré tout à la fonction resize... Vois tu la solution à cela ?
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
32
on fait une connerie non ?
j'ai l'impression que le ok=true ne s'exécute
avant que le resize ne se fasse ?
<html>
<head>
<script type="text/javascript">
function met()
{ ok=true; }
function nvdim()
{if (ok)
 {ok=false;
   i=i+10;
   window.resizeTo(600,500-i);
   setTimeout("met();",10); }  }
</script> 
</HEAD>

<script type="text/javascript">
var i=0;
var ok=true;
window.onresize=nvdim;
</script>
</html>

en mettant une tempo ?
pas très satisfaisant ! mais ?!
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

Malheureusement, cela ne marche toujours pas comme je veux...

Je reprécise que ce que je désire faire c'est redimensionner la longueur proportionnellement en fonction de la hauteur...

De ce fait, il faudrait que j'intercepte seulement la dernière valeur (après mouseup) de la longueur... Et pour cela, l'évenement du body onresizeend était parfait... Cependant, il ne marche pas....

Du coup, j'essaie avec du bricolage comme ce que nous avons essayé de faire précédemment mais sans succes non plus, car cela ne redimenssionne pas ma page... la souris à la priorité du resizing... (vous voyez ce que je veux dire ?!?)

Si vous avez une autre hypothèse de travail... merci d'avance de me la poster...

Avec toute ma sympathie,

Anthony