Redimenssionnement proportionnel d'une fenêtre

lacouine Messages postés 33 Date d'inscription vendredi 20 octobre 2000 Statut Membre Dernière intervention 28 octobre 2004 - 23 juin 2004 à 09:28
lacouine Messages postés 33 Date d'inscription vendredi 20 octobre 2000 Statut Membre Dernière intervention 28 octobre 2004 - 2 juil. 2004 à 11:14
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

cs_bultez Messages postés 13616 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
23 juin 2004 à 11:14
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]]
0
lacouine Messages postés 33 Date d'inscription vendredi 20 octobre 2000 Statut Membre Dernière intervention 28 octobre 2004
23 juin 2004 à 11:21
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
0
lacouine Messages postés 33 Date d'inscription vendredi 20 octobre 2000 Statut Membre Dernière intervention 28 octobre 2004
23 juin 2004 à 11:32
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
0
lacouine Messages postés 33 Date d'inscription vendredi 20 octobre 2000 Statut Membre Dernière intervention 28 octobre 2004
30 juin 2004 à 11:10
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
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
2 juil. 2004 à 10:13
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 ?
0
cs_bultez Messages postés 13616 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
2 juil. 2004 à 10:52
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]]
0
lacouine Messages postés 33 Date d'inscription vendredi 20 octobre 2000 Statut Membre Dernière intervention 28 octobre 2004
2 juil. 2004 à 11:14
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
0
Rejoignez-nous