{"id":131,"date":"2007-12-04T12:52:12","date_gmt":"2007-12-04T11:52:12","guid":{"rendered":"http:\/\/luca.lovalvo.net\/1_luca_lo_valvo\/archive\/226_redimensionner_une_fentre_ou_une_popup_en_javascript.html"},"modified":"2022-11-04T15:58:25","modified_gmt":"2022-11-04T14:58:25","slug":"redimensionner-une-fenetre-ou-une-popup-en-javascript","status":"publish","type":"post","link":"https:\/\/luca.lovalvo.ch\/blog\/redimensionner-une-fenetre-ou-une-popup-en-javascript\/","title":{"rendered":"Redimensionner une fen\u00eatre (ou une PopUp) en Javascript"},"content":{"rendered":"<p>L&#39;ojectif est de redimensionner une fen&ecirc;tre ou une popup, en r&eacute;duisant, par exemple, 90px de hauteur.<\/p>\n<p>&nbsp;<\/p>\n<p>Je suis conscient que cela peut para&icirc;tre bizarre d&rsquo;effectuer un window.open de 728 large sur 590 de haut, si apr&egrave;s, on modifie la hauteur pour obtenir 500 de haut.<br \/>Donc vous vous demandez, pourquoi ne pas ouvrir la PopUp en 728&#215;500 directement.<br \/>Simplement, car dans certain cas de situation, il est plus simple de demander &agrave; la PopUp de s&rsquo;adapter au client apr&egrave;s son ouverture, plut&ocirc;t qu&rsquo;&agrave; l&rsquo;ouverture elle-m&ecirc;me.<br \/>Par exemple pour &laquo; masquer &raquo; un bord sous certaine condition.<br \/>Vous comprendrez mon cas plus bas \ud83d\ude42<\/p>\n<p>(<a href=\"#code\">passer directement au code<\/a>)<\/p>\n<p>Mon cas de siutation est le suivant :<\/p>\n<p><font color=\"#008000\">Liens.html<\/font><br \/>Une page avec des liens vers des images, indiquant en dur la taille de la fen&ecirc;tre dans le windows.open().<\/p>\n<p><font color=\"#008000\">images.php<\/font><br \/>Un script d&rsquo;affichage d&rsquo;image contant :<br \/>&#8211; Un logo<br \/>&#8211; Mon image<br \/>&#8211; un Leaderboard de 728&#215;90<\/p>\n<p>Le script (images.php) est le m&ecirc;me pour chaque image, la page liens.html, conna&icirc;t, d&rsquo;apr&egrave;s une base de donn&eacute;e, la hauteur et la largeur de l&rsquo;image (la place qu&rsquo;elle prend), et adapte la taille de la popup en cons&eacute;quence.<\/p>\n<p>L&rsquo;id&eacute;e est la suivante :<br \/>Adapter la taille de la PopUp (images.php) contant le logo, l&rsquo;image, et le leaderboard en fonction de la taille de l&rsquo;image.<br \/>Seulement, le Leaderboard lui peut s&rsquo;afficher sous certaine condition (g&eacute;o targeting par exemple).<br \/>C&rsquo;est pour cela, qu&rsquo;afin d&rsquo;&eacute;viter un espace suppl&eacute;mentaire en bas de la fen&ecirc;tre, nous allons, r&eacute;adapter cette derni&egrave;re en fonction de si le Leaderboard est appel&eacute; ou pas.<\/p>\n<p>En faite, tout ce blabla pour 3 lignes de code JS, car je ne vais pas pr&eacute;senter ici, ni images.php, ni rien d&rsquo;autre \ud83d\ude42 juste la fonction qui va redimensionner le tout \ud83d\ude42<\/p>\n<p><a name=\"code\" title=\"code\"><\/a>La dite fonction est : window.resizeTo(x,y)<br \/>X = La largeur<br \/>y= La hauteur.<\/p>\n<p><strong>1) On d&eacute;tecte la taille actuelle de la popup<\/strong><\/p>\n<p><font color=\"#0000ff\">var windowWidth;<br \/>var windowHeight;<\/p>\n<p>\/\/en fonction du navigateur &nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;  <br \/>if (parseInt(navigator.appVersion)&gt;3) <br \/>{<br \/>&nbsp;if (navigator.appName==&quot;Netscape&quot;) {<br \/>&nbsp; windowWidth = <font color=\"#ff0000\">window.innerWidth;<\/font><br \/>&nbsp; windowHeight = <font color=\"#ff0000\">window.innerHeight;<\/font><br \/>&nbsp;}<br \/>&nbsp;if (navigator.appName.indexOf(&quot;Microsoft&quot;)!=-1) {<br \/>&nbsp; windowWidth = <font color=\"#ff0000\">document.body.offsetWidth;<\/font><br \/>&nbsp; <font color=\"#ff00ff\">windowHeight <\/font>= <font color=\"#ff0000\">document.body.offsetHeight;<\/font><br \/>&nbsp;}<br \/>}<\/font><\/p>\n<p><strong><font color=\"#000000\">2) on &eacute;tablie la nouvelle taille de la fen&ecirc;tre<\/font><\/strong><\/p>\n<p><font color=\"#0000ff\">\/\/on d&eacute;termine la nouvelle taille de la fen&ecirc;tre en supprimant <strong>90<\/strong> px<br \/><font color=\"#ff9900\">windowNewHeight<\/font>= <font color=\"#ff00ff\">windowHeight<\/font><font color=\"#ff0000\">&#8211;<strong>90<\/strong><\/font><\/p>\n<p>\/\/on redimensionne le popup avec la nouvelle hauteur<br \/>window.resizeTo(windowWidth, <font color=\"#ff9900\">windowNewHeight<\/font>)<\/font><\/p>\n<p>Waouw .. rude. Je sais<\/p>\n<p>Dans mon cas de situation j&rsquo;ai mis le tout dans une fonction JS qui &eacute;tait appel&eacute;e, uniquement si&nbsp; le banner ne s&rsquo;affichait pas, par exemple, si le visiteur ne provenait pas de Suisse.<\/p>\n<p><strong>3) facultatif, afficher la taille de la fen&ecirc;tre avant la redimension<\/strong><br \/>&nbsp;&nbsp;<font color=\"#0000ff\">&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; document.write(<br \/>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &quot;Largeur = &quot;+windowWidth+&quot;&lt;br&gt;&quot;<br \/>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; +&quot;hauteur = &quot;+windowHeight<br \/>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; )<\/font><\/p>\n<p>&nbsp;<br \/><strong>4)<\/strong> On pourrait aller un peu plus loin on ne sp&eacute;cifiant pas la hauteur et la largeur de la popup dans le window.open() mais directement en se basant sur les propri&eacute;t&eacute;s de l&rsquo;images directement.<\/p>\n<p>Par exemple avec un :<br \/><font color=\"#0000ff\">imageWidth = document.images[0].width;<br \/>imageHeight = document.images[0].height;<\/p>\n<p><\/font><\/p>\n","protected":false},"excerpt":{"rendered":"<p>L&#39;ojectif est de redimensionner une fen&ecirc;tre ou une popup, en r&eacute;duisant, par exemple, 90px de hauteur. &nbsp; Je suis conscient que cela peut para&icirc;tre bizarre d&rsquo;effectuer un window.open de 728 large sur 590 de haut, si apr&egrave;s, on modifie la hauteur pour obtenir 500 de haut.Donc vous vous demandez, pourquoi ne pas ouvrir la PopUp [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[8],"tags":[],"class_list":["post-131","post","type-post","status-publish","format-standard","hentry","category-programmation"],"_links":{"self":[{"href":"https:\/\/luca.lovalvo.ch\/blog\/wp-json\/wp\/v2\/posts\/131","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/luca.lovalvo.ch\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/luca.lovalvo.ch\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/luca.lovalvo.ch\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/luca.lovalvo.ch\/blog\/wp-json\/wp\/v2\/comments?post=131"}],"version-history":[{"count":1,"href":"https:\/\/luca.lovalvo.ch\/blog\/wp-json\/wp\/v2\/posts\/131\/revisions"}],"predecessor-version":[{"id":339,"href":"https:\/\/luca.lovalvo.ch\/blog\/wp-json\/wp\/v2\/posts\/131\/revisions\/339"}],"wp:attachment":[{"href":"https:\/\/luca.lovalvo.ch\/blog\/wp-json\/wp\/v2\/media?parent=131"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/luca.lovalvo.ch\/blog\/wp-json\/wp\/v2\/categories?post=131"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/luca.lovalvo.ch\/blog\/wp-json\/wp\/v2\/tags?post=131"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}