OVH Cloud OVH Cloud

Pourquoi ça fonctionne

7 réponses
Avatar
limipl
Salut à tous,
D'habitude on demande pourquoi ça foire.
Ben, là j'ai le pb inverse !!
Pourquoi ce code fonctionne.

function Tailleimage(largBodyInit,hautBodyInit,largInitImg,hautInitImg){
if (typeof document.StyleImage == 'undefined'){
document.StyleImage = new Object;
}
if (typeof document.StyleImage.Tailleimage == 'undefined') {
document.StyleImage.Tailleimage = new Object;
document.StyleImage.Tailleimage.bodyLargInit = largBodyInit;
document.StyleImage.Tailleimage.bodyHautInit = hautBodyInit;
document.StyleImage.Tailleimage.imgLargInit = largInitImg;
document.StyleImage.Tailleimage.imgHautInit = hautInitImg;
document.StyleImage.Tailleimage.rapport = hautInitImg/largInitImg;
}
var appName = window.navigator.appName;
if (appName=="Microsoft Internet Explorer"){
var largeurBody = document.body.offsetWidth;
var hauteurBody = document.body.offsetHeight;
}else{
var largeurBody = document.width;
var hauteurBody = document.height;
}
var largAjustee = parseInt(document.StyleImage.Tailleimage.imgLargInit) *
(largeurBody / document.StyleImage.Tailleimage.bodyLargInit);
var hautAjustee = parseInt(largAjustee) *
(document.StyleImage.Tailleimage.rapport);
document.getElementById("image1").width = Math.round(largAjustee);
document.getElementById("image1").height = Math.round(hautAjustee);
//ça fonctionne et c'est bizarre
window.onresize = Tailleimage;
}

Le pb c'est la dernière ligne: window.onresize = Tailleimage;
Il s'agit de redimensionner une image en même temps que la fenêtre.
Si j'écris window.onresize = Tailleimage();, ça foire. je comprend pourquoi.
Il manque les paramètres de la fonction.
si j'écrit window.onresize = Tailleimage(1500,1100,548,379);, ça ne
fonctionne pas non plus. Là déjà je ne comprend plus.

Pourquoi cette syntaxe (window.onresize = Tailleimage;) fonctionne ???
Là, j'y pige que dalle !
Merci de vos lumières.

Pour voir: http://www.curiosit.com/bonnier/bonnier1.php.

limipl

7 réponses

Avatar
Thibault TAILLANDIER
Salut à tous,


Salut,

D'habitude on demande pourquoi ça foire.
Ben, là j'ai le pb inverse !!
Pourquoi ce code fonctionne.

function Tailleimage(largBodyInit,hautBodyInit,largInitImg,hautInitImg){ }

//ça fonctionne et c'est bizarre
window.onresize = Tailleimage;
}

Le pb c'est la dernière ligne: window.onresize = Tailleimage;
Il s'agit de redimensionner une image en même temps que la fenêtre.
Si j'écris window.onresize = Tailleimage();, ça foire. je comprend pourquoi.
Il manque les paramètres de la fonction.
si j'écrit window.onresize = Tailleimage(1500,1100,548,379);, ça ne
fonctionne pas non plus. Là déjà je ne comprend plus.


Ca ne fonctionne pas car onresize est une fonction qui écoute les
évenements, tu ne peux pas la remplacer par la valeur de retour de ta
fonction (qui de plus retourne undefined).


Pourquoi cette syntaxe (window.onresize = Tailleimage;) fonctionne ???


C'est la syntaxe dite standard. Elle permet de spécifiquer quelle
fonction va être appellée quand il y aura un onresize sur cette fenetre.
On pourrait la comparer à la syntaxe: <body onResize="Tailleimage(....);">


Là, j'y pige que dalle !
Merci de vos lumières.

limipl


J'espère n'avoir pas trop dit de bêtises, et que ca t'aura aidé :-)
Bye
--
Thibault

Avatar
limipl
Oui, merci. Mais ça marche alors qu'aucun paramètre n'est passé à la
fonction. Elle prend quoi en paramètres ?

"Thibault TAILLANDIER" wrote in message
news:423ff057$0$1351$
Salut à tous,


Salut,

D'habitude on demande pourquoi ça foire.
Ben, là j'ai le pb inverse !!
Pourquoi ce code fonctionne.

function
Tailleimage(largBodyInit,hautBodyInit,largInitImg,hautInitImg){ }

//ça fonctionne et c'est bizarre
window.onresize = Tailleimage;
}

Le pb c'est la dernière ligne: window.onresize = Tailleimage;
Il s'agit de redimensionner une image en même temps que la fenêtre.
Si j'écris window.onresize = Tailleimage();, ça foire. je comprend
pourquoi. Il manque les paramètres de la fonction.
si j'écrit window.onresize = Tailleimage(1500,1100,548,379);, ça ne
fonctionne pas non plus. Là déjà je ne comprend plus.


Ca ne fonctionne pas car onresize est une fonction qui écoute les
évenements, tu ne peux pas la remplacer par la valeur de retour de ta
fonction (qui de plus retourne undefined).


Pourquoi cette syntaxe (window.onresize = Tailleimage;) fonctionne ???


C'est la syntaxe dite standard. Elle permet de spécifiquer quelle fonction
va être appellée quand il y aura un onresize sur cette fenetre.
On pourrait la comparer à la syntaxe: <body onResize="Tailleimage(....);">


Là, j'y pige que dalle !
Merci de vos lumières.

limipl


J'espère n'avoir pas trop dit de bêtises, et que ca t'aura aidé :-)
Bye
--
Thibault




Avatar
Christophe M
Oui, merci. Mais ça marche alors qu'aucun paramètre n'est passé à la
fonction. Elle prend quoi en paramètres ?

"Thibault TAILLANDIER" wrote in message
news:423ff057$0$1351$


Salut à tous,


Salut,


D'habitude on demande pourquoi ça foire.
Ben, là j'ai le pb inverse !!
Pourquoi ce code fonctionne.

function
Tailleimage(largBodyInit,hautBodyInit,largInitImg,hautInitImg){ }

//ça fonctionne et c'est bizarre
window.onresize = Tailleimage;
}

Le pb c'est la dernière ligne: window.onresize = Tailleimage;
Il s'agit de redimensionner une image en même temps que la fenêtre.
Si j'écris window.onresize = Tailleimage();, ça foire. je comprend
pourquoi. Il manque les paramètres de la fonction.
si j'écrit window.onresize = Tailleimage(1500,1100,548,379);, ça ne
fonctionne pas non plus. Là déjà je ne comprend plus.


Ca ne fonctionne pas car onresize est une fonction qui écoute les
évenements, tu ne peux pas la remplacer par la valeur de retour de ta
fonction (qui de plus retourne undefined).


Pourquoi cette syntaxe (window.onresize = Tailleimage;) fonctionne ???


C'est la syntaxe dite standard. Elle permet de spécifiquer quelle fonction
va être appellée quand il y aura un onresize sur cette fenetre.
On pourrait la comparer à la syntaxe: <body onResize="Tailleimage(....);">


Là, j'y pige que dalle !
Merci de vos lumières.

limipl


J'espère n'avoir pas trop dit de bêtises, et que ca t'aura aidé :-)
Bye
--
Thibault





En paramètre, elle peut recevoir "this" et "event". ça dépend du

navigateur aussi.

Le mieux, pour avoir les valeurs par défaut, serait de faire un truc
comme ça :
window.onresize = function(){ Tailleimage(1500,1100,548,379);}



Avatar
Thibaut Allender
[message illisible]

petit rappel d'usage...
http://giromini.org/usenet-fr/repondre.html

merci

--
thibaut allender | freelance | http://capsule.org
Avatar
limipl
"Christophe M" <mccricri_at_hotmail.com> wrote in message
news:42401208$
Oui, merci. Mais ça marche alors qu'aucun paramètre n'est passé à la
fonction. Elle prend quoi en paramètres ?

"Thibault TAILLANDIER" wrote in message
news:423ff057$0$1351$


Salut à tous,


Salut,


D'habitude on demande pourquoi ça foire.
Ben, là j'ai le pb inverse !!
Pourquoi ce code fonctionne.

function
Tailleimage(largBodyInit,hautBodyInit,largInitImg,hautInitImg){ }

//ça fonctionne et c'est bizarre
window.onresize = Tailleimage;
}

Le pb c'est la dernière ligne: window.onresize = Tailleimage;
Il s'agit de redimensionner une image en même temps que la fenêtre.
Si j'écris window.onresize = Tailleimage();, ça foire. je comprend
pourquoi. Il manque les paramètres de la fonction.
si j'écrit window.onresize = Tailleimage(1500,1100,548,379);, ça ne
fonctionne pas non plus. Là déjà je ne comprend plus.


Ca ne fonctionne pas car onresize est une fonction qui écoute les
évenements, tu ne peux pas la remplacer par la valeur de retour de ta
fonction (qui de plus retourne undefined).


Pourquoi cette syntaxe (window.onresize = Tailleimage;) fonctionne ???


C'est la syntaxe dite standard. Elle permet de spécifiquer quelle
fonction va être appellée quand il y aura un onresize sur cette fenetre.
On pourrait la comparer à la syntaxe: <body
onResize="Tailleimage(....);">


Là, j'y pige que dalle !
Merci de vos lumières.

limipl


J'espère n'avoir pas trop dit de bêtises, et que ca t'aura aidé :-)
Bye
--
Thibault





En paramètre, elle peut recevoir "this" et "event". ça dépend du

navigateur aussi.

Le mieux, pour avoir les valeurs par défaut, serait de faire un truc
comme ça :
window.onresize = function(){ Tailleimage(1500,1100,548,379);}

Oui, avant j'avais mis window.onresize = Tailleimage(x,y,z,w);
mais ça fonctionne moins bien.



J'ai toujours pas pigé, mais je vais y réfléchir.
function() ? ça représente quoi ?
Merci de vos réponses.
limipl




Avatar
Christophe M
Le mieux, pour avoir les valeurs par défaut, serait de faire un truc
comme ça :
window.onresize = function(){ Tailleimage(1500,1100,548,379);}



Oui, avant j'avais mis window.onresize = Tailleimage(x,y,z,w);




mais ça fonctionne moins bien.
J'ai toujours pas pigé, mais je vais y réfléchir.
function() ? ça représente quoi ?
Merci de vos réponses.
limipl




Le problème est que window.onresize DOIT être une fonction avec des
paramètres bien précis (mais pas obligatoire) : "this" et "event".
function(){} c'est utilisé pour définir une fonction Javascript.
on peut très bien définir une fonction "anonyme" qui est directement
associée à onresize.
donc pour être clair (j'espère :-)
Tailleimage : C'est une fonction
Tailleimage() : c'est un appel à la fonction Tailleimage.
Tailleimage(1500,1100,548,379) : c'est un appel avec des paramètres.

onresize doit être une fonction, donc onresize = Tailleimage c'est correcte.
Alors que onresize = Tailleimage() associe le résultat de l'appel à la
fonction Tailleimage (et non la fonction elle-même) à onresize.

CM




Avatar
limipl
"Christophe M" <mccricri_at_hotmail.com> wrote in message
news:4241709a$

Le mieux, pour avoir les valeurs par défaut, serait de faire un truc
comme ça :
window.onresize = function(){ Tailleimage(1500,1100,548,379);}



Oui, avant j'avais mis window.onresize = Tailleimage(x,y,z,w);




mais ça fonctionne moins bien.
J'ai toujours pas pigé, mais je vais y réfléchir.
function() ? ça représente quoi ?
Merci de vos réponses.
limipl


Le problème est que window.onresize DOIT être une fonction avec des
paramètres bien précis (mais pas obligatoire) : "this" et "event".
function(){} c'est utilisé pour définir une fonction Javascript.
on peut très bien définir une fonction "anonyme" qui est directement
associée à onresize.
donc pour être clair (j'espère :-)
Tailleimage : C'est une fonction
Tailleimage() : c'est un appel à la fonction Tailleimage.
Tailleimage(1500,1100,548,379) : c'est un appel avec des paramètres.

onresize doit être une fonction, donc onresize = Tailleimage c'est
correcte.
Alors que onresize = Tailleimage() associe le résultat de l'appel à la
fonction Tailleimage (et non la fonction elle-même) à onresize.

CM

Voilà, voilà de quoi méditer.
Merci, c'est un point subtil mais utile.


limipl