Centrer un popup avec FF.....

jacknikolson Messages postés 134 Date d'inscription jeudi 17 juin 2004 Statut Membre Dernière intervention 18 novembre 2012 - 1 janv. 2006 à 23:24
PetoleTeam Messages postés 3426 Date d'inscription lundi 26 décembre 2005 Statut Membre Dernière intervention 14 janvier 2011 - 3 janv. 2006 à 15:05
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

PetoleTeam Messages postés 3426 Date d'inscription lundi 26 décembre 2005 Statut Membre Dernière intervention 14 janvier 2011 17
3 janv. 2006 à 09:09
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
0
jacknikolson Messages postés 134 Date d'inscription jeudi 17 juin 2004 Statut Membre Dernière intervention 18 novembre 2012
3 janv. 2006 à 11:44
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
0
PetoleTeam Messages postés 3426 Date d'inscription lundi 26 décembre 2005 Statut Membre Dernière intervention 14 janvier 2011 17
3 janv. 2006 à 14:13
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...
0
jacknikolson Messages postés 134 Date d'inscription jeudi 17 juin 2004 Statut Membre Dernière intervention 18 novembre 2012
3 janv. 2006 à 14:27
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
0

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

Posez votre question
jacknikolson Messages postés 134 Date d'inscription jeudi 17 juin 2004 Statut Membre Dernière intervention 18 novembre 2012
3 janv. 2006 à 14:32
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();

}
0
jacknikolson Messages postés 134 Date d'inscription jeudi 17 juin 2004 Statut Membre Dernière intervention 18 novembre 2012
3 janv. 2006 à 14:33
au fait, ça veut dire quoi Opera qui lui encapsule??? c'est grave?

Sinon, merci pour le code....
0
PetoleTeam Messages postés 3426 Date d'inscription lundi 26 décembre 2005 Statut Membre Dernière intervention 14 janvier 2011 17
3 janv. 2006 à 15:05
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...
0
Rejoignez-nous