Redimensionner une fenêtre (ou une PopUp) en Javascript
L'ojectif est de redimensionner une fenêtre ou une popup, en réduisant, par exemple, 90px de hauteur.
Je suis conscient que cela peut paraître bizarre d’effectuer un window.open de 728 large sur 590 de haut, si après, on modifie la hauteur pour obtenir 500 de haut.
Donc vous vous demandez, pourquoi ne pas ouvrir la PopUp en 728×500 directement.
Simplement, car dans certain cas de situation, il est plus simple de demander à la PopUp de s’adapter au client après son ouverture, plutôt qu’à l’ouverture elle-même.
Par exemple pour « masquer » un bord sous certaine condition.
Vous comprendrez mon cas plus bas 🙂
Mon cas de siutation est le suivant :
Liens.html
Une page avec des liens vers des images, indiquant en dur la taille de la fenêtre dans le windows.open().
images.php
Un script d’affichage d’image contant :
– Un logo
– Mon image
– un Leaderboard de 728×90
Le script (images.php) est le même pour chaque image, la page liens.html, connaît, d’après une base de donnée, la hauteur et la largeur de l’image (la place qu’elle prend), et adapte la taille de la popup en conséquence.
L’idée est la suivante :
Adapter la taille de la PopUp (images.php) contant le logo, l’image, et le leaderboard en fonction de la taille de l’image.
Seulement, le Leaderboard lui peut s’afficher sous certaine condition (géo targeting par exemple).
C’est pour cela, qu’afin d’éviter un espace supplémentaire en bas de la fenêtre, nous allons, réadapter cette dernière en fonction de si le Leaderboard est appelé ou pas.
En faite, tout ce blabla pour 3 lignes de code JS, car je ne vais pas présenter ici, ni images.php, ni rien d’autre 🙂 juste la fonction qui va redimensionner le tout 🙂
La dite fonction est : window.resizeTo(x,y)
X = La largeur
y= La hauteur.
1) On détecte la taille actuelle de la popup
var windowWidth;
var windowHeight;
//en fonction du navigateur
if (parseInt(navigator.appVersion)>3)
{
if (navigator.appName=="Netscape") {
windowWidth = window.innerWidth;
windowHeight = window.innerHeight;
}
if (navigator.appName.indexOf("Microsoft")!=-1) {
windowWidth = document.body.offsetWidth;
windowHeight = document.body.offsetHeight;
}
}
2) on établie la nouvelle taille de la fenêtre
//on détermine la nouvelle taille de la fenêtre en supprimant 90 px
windowNewHeight= windowHeight–90
//on redimensionne le popup avec la nouvelle hauteur
window.resizeTo(windowWidth, windowNewHeight)
Waouw .. rude. Je sais
Dans mon cas de situation j’ai mis le tout dans une fonction JS qui était appelée, uniquement si le banner ne s’affichait pas, par exemple, si le visiteur ne provenait pas de Suisse.
3) facultatif, afficher la taille de la fenêtre avant la redimension
document.write(
"Largeur = "+windowWidth+"<br>"
+"hauteur = "+windowHeight
)
4) On pourrait aller un peu plus loin on ne spécifiant pas la hauteur et la largeur de la popup dans le window.open() mais directement en se basant sur les propriétés de l’images directement.
Par exemple avec un :
imageWidth = document.images[0].width;
imageHeight = document.images[0].height;