Centrer un popup avec FF.....

Signaler
Messages postés
134
Date d'inscription
jeudi 17 juin 2004
Statut
Membre
Dernière intervention
18 novembre 2012
-
Messages postés
3426
Date d'inscription
lundi 26 décembre 2005
Statut
Membre
Dernière intervention
14 janvier 2011
-
Salut à tous et bonne année.

J'utilise un cms (pwsphp) avec une galerie d'images. Il y a un JS pour afficher les images en popup. je voudrais que l'image ne s'ouvre pas dans le coin haut/gauche de l'écran mais au centre.
J'ai essayé de bidouiller le code du cms et même si je réussis à faire déplacer le popup sous IE en changeant certaines valeurs, cela ne fait aucun effet sous FF.

voici le code:

<script>

// Set the horizontal and vertical position for the popup

PositionX = 0;
PositionY = 0;

// Set these value approximately 20 pixels greater than the
// size of the largest image to be used (needed for Netscape)

defaultWidth = 0;
defaultHeight = 0;

// Set autoclose true to have the window close automatically
// Set autoclose false to allow multiple popup windows

var AutoClose = true;

if (parseInt(navigator.appVersion.charAt(0))>=4){
var isNN=(navigator.appName=="Netscape")?1:0;
var isIE=(navigator.appName.indexOf("Microsoft")!=-1)?1:0;
}
var optNN='scrollbars=yes,width='+defaultWidth+',height='+defaultHeight+',left='+PositionX+',top='+PositionY;
var optIE='scrollbars=yes,width=150,height=100,left='+PositionX+',top='+PositionY;

function popImage(imageURL,imageTitle){
if (isNN){
imgWin=window.open('about:blank','',optNN);
}
if (isIE){
imgWin=window.open('about:blank','',optIE);
}
with (imgWin.document){
writeln('<html><head><title>Loading...</title><style>body{margin:0px;}</style>');writeln('<sc'+'ript>');
writeln('var isNN,isIE;');writeln('if (parseInt(navigator.appVersion.charAt(0))>=4){');
writeln('isNN=(navigator.appName=="Netscape")?1:0;');
writeln('isIE=(navigator.appName.indexOf("Microsoft")!=-1)?1:0;}');
writeln('function reSizeToImage(){');writeln('if (isIE){');writeln('window.resizeTo(100,100);');
writeln('width=100-(document.body.clientWidth-document.images[0].width);');
writeln('height=100-(document.body.clientHeight-document.images[0].height);');
writeln('window.resizeTo(width,height);}');
writeln('if (isNN){');
writeln('window.innerWidth=document.images["George"].width;');
writeln('window.innerHeight=document.images["George"].height;}}');
writeln('function doTitle(){document.title="'+imageTitle+'";}');
writeln('</sc'+'ript>');

if (!AutoClose)
writeln('</head>')
else
writeln('</head>');
writeln('</html>');
close();
}
}
</script>

Que faire pour que ce popup soit centré sous IE et sous FF?

merci

7 réponses

Messages postés
3426
Date d'inscription
lundi 26 décembre 2005
Statut
Membre
Dernière intervention
14 janvier 2011
18
Happy new year for every

Si j'ai tout bien compris après les bubulles...hips !!!

il te suffit de récupérer la largeur et la hauteur de l'écran avec l'objet screen...

var Hauteur = screen.height;
var Largeur = screen.width;

comme tu as déjà récupéré window.innerWidth et window.innerHeight,

var PosX = Largeur -(window.innerWidth/2);
var PosY = Hauteurr -(window.innerHeight/2);

reste à faire un...

window.moveTo(PosX, PosY); // repositionne la fenêtre

et le centrage à l'épaisseur du cadre prêt est faite...

Nota :
en récupérant outerHeight et outerWidth tu obtiens les dimensions barre de titre, cadre etc...en plus
Messages postés
134
Date d'inscription
jeudi 17 juin 2004
Statut
Membre
Dernière intervention
18 novembre 2012

Salu PetoleTeam et merci pour ton message.

Happy new year à toi aussi

je pense qu'avec ton aide la solution est proche, mais comme je ne maîtrise pas du tout JS je ne sais pas trop où mettre le code.

J'ai collé les déclarations de variables en haut juste après <script>
var Hauteur = screen.height;
var Largeur = screen.width;
var PosX = Largeur -(window.innerWidth/2);
var PosY = Hauteur -(window.innerHeight/2);

mais je ne sais pas où mettre window.moveTo(PosX, PosY);

J'ai essayé de le coller au pif juste apès mais ça ne donne rien. Jai regardé la syntaxe avec le writeln et j'ai essayé de coller ça là dedans avec un truc du genre
writeln('function placeToImage(){');
writeln('window.moveTo(PosX, PosY);}}');
(sois indulgent c'est du pifomètre )
mais sous ff ça me donne un fullscreen et sous IE un popup de 50x40....

Là je bloque un peu.......et en plus, comme tu dis, les bubulles aident pas....tu pourrais m'éclairer un peu?

Merci
Messages postés
3426
Date d'inscription
lundi 26 décembre 2005
Statut
Membre
Dernière intervention
14 janvier 2011
18
Tout d'abord BURPSSS! Il reste des bulles vu la con...rie écrite ci dessus à savoir pour centrer on fait...

var PosX = ( Largeur - window.innerWidth) /2 ;
var PosY = ( Hauteur - window.innerHeight) /2;

et NON
var PosX = Largeur -(window.innerWidth/2);
var PosY = Hauteur -(window.innerHeight/2);
enfin BON...

...passons aux choses sérieuses, reBURPSSSS...

ta fonction devrait ressembler à cela...

writeln('function reSizeToImage() { ');
// Déclarations des variables ATTENTION les variables du document d'origine ne sont pas visibles dans le document résultat...
writeln('var Hauteur = screen.height;');
writeln('var Largeur = screen.width;');
writeln('var PosX; var PosY;');
writeln('var Larg; var Haut;');

writeln('if (isIE) { ');
writeln(' window.resizeTo(100,100);');
writeln(' Larg =100-(document.body.clientWidth-document.images[0].width);');
writeln(' Haut= 100-(document.body.clientHeight-document.images[0].height);');
writeln(' window.resizeTo(Larg,Haut);');
writeln(' } ');
writeln('if (isNN){');
writeln(' Larg =document.images["George"].width;');
writeln(' Haut= document.images["George"].height;');
writeln(' window.innerWidth = Larg;');
writeln(' window.innerHeight = Haut;');
writeln(' } ');
// Centrage fenêtre
writeln('PosX = (Largeur -Larg)/2;');
writeln('PosY = (Hauteur -Haut)/2;');
writeln(' window.moveTo (PosX, PosY);');
writeln('}');

J'ai testé sous IE, NETSCAPE, FireFOX et Opera qui lui encapsule => New PB à régler...
Messages postés
134
Date d'inscription
jeudi 17 juin 2004
Statut
Membre
Dernière intervention
18 novembre 2012

bouuu.....
je sais que tu vas dire que j'abuse mais j'arrive pas à placer les lignes au bon endroit ....

ça marche pas.....

C'est abuser de te demander de me mettre le code en entier?.....je me sens trop nul
Messages postés
134
Date d'inscription
jeudi 17 juin 2004
Statut
Membre
Dernière intervention
18 novembre 2012

j'ai rien dit je crois que j'ai réussi: j'ai mis ton code à la place de l'ancienne fonction resize

function popImage(imageURL,imageTitle){
if (isNN){
imgWin=window.open('about:blank','',optNN);
}
if (isIE){
imgWin=window.open('about:blank','',optIE);
}
with (imgWin.document){

writeln('<html><head><title>Loading...</title><style>body{margin:0px;}</style>');
writeln('<sc'+'ript>');
writeln('var isNN,isIE;');
writeln('if (parseInt(navigator.appVersion.charAt(0))>=4){');
writeln('isNN=(navigator.appName=="Netscape")?1:0;');
writeln('isIE=(navigator.appName.indexOf("Microsoft")!=-1)?1:0;}');
writeln('function reSizeToImage(){');
// Déclarations des variables ATTENTION les variables du document d'origine ne sont pas visibles dans le document résultat...
writeln('var Hauteur = screen.height;');
writeln('var Largeur = screen.width;');
writeln('var PosX; var PosY;');
writeln('var Larg; var Haut;');


writeln('if (isIE){');
writeln(' window.resizeTo(100,100);');
writeln(' Larg=100-(document.body.clientWidth-document.images[0].width);');
writeln(' Haut=100-(document.body.clientHeight-document.images[0].height);');
writeln(' window.resizeTo(Larg,Haut);');
writeln('}');
writeln('if (isNN){');
writeln(' Larg=document.images["George"].width;');
writeln(' Haut=document.images["George"].height;');
writeln(' window.innerWidth = Larg;');
writeln(' window.innerHeight = Haut;');
writeln('}');
// Centrage fenêtre
writeln('PosX = (Largeur -Larg)/2;');
writeln('PosY = (Hauteur -Haut)/2;');
writeln('window.moveTo(PosX, PosY);');
writeln('}');


writeln('</sc'+'ript>');
if (!AutoClose)
writeln('</head>')
else
writeln('</head>');
writeln('</html>');
close();

}
Messages postés
134
Date d'inscription
jeudi 17 juin 2004
Statut
Membre
Dernière intervention
18 novembre 2012

au fait, ça veut dire quoi Opera qui lui encapsule??? c'est grave?

Sinon, merci pour le code....
Messages postés
3426
Date d'inscription
lundi 26 décembre 2005
Statut
Membre
Dernière intervention
14 janvier 2011
18
RIEN d'alarmant...

Opéra ouvre la nouvelle fenêtre dans la fenêtre active, et donc la centre, si l'option ouvrir une nouvelle dans un onglet est activée...

L'essentiel est que cela marche comme disait un escalier de ma connaissance...