Taille de fenêtre en php

Consultez la formation SEO spéciale Wordpress
par WebRankInfo / Ranking Metrics


OTP
Modérateur
Modérateur
 
Messages: 20163
Enregistré le: 16 Déc 2005

Taille de fenêtre en php

Message le Lun Mar 03, 2008 22:10

Bonsoir,

Je cherche à faire une page qui aurait, en pleine taille sur la fenêtre, une Google Maps. Je dois pour ça définir un DIV de la dimension de la fenêtre. Question : comment connaître en php ces dimensions ? Pas trouvé de solution sur le web...

Merci d'avance,

Michaël


julienr
WRInaute impliqué
WRInaute impliqué
 
Messages: 963
Enregistré le: 5 Aoû 2003

Message le Lun Mar 03, 2008 22:57

bonsoir,
non pas possible en php, y a que du js qui puisse dire cela


OTP
Modérateur
Modérateur
 
Messages: 20163
Enregistré le: 16 Déc 2005

Message le Mar Mar 04, 2008 6:34

Et on peut récupérer des variables js avec le php, ensuite ?

BlackStorm
WRInaute discret
WRInaute discret
 
Messages: 120
Enregistré le: 29 Jan 2008

Message le Mar Mar 04, 2008 7:53

Salut,

Alors pour passer une variable JavaScript vers du PHP, la réponse est ici :
http://forum.webrankinfo.com/recuperation-une-variable-javascript-code-php-t4128.html

Pour synthétiser, non, ça n'est pas possible car PHP est un langage interprété par ton serveur et JS par ton client : deux mondes différents.
En fait, PHP s'exécute avant le code JavaScript.
Le seul moyens serais de passer par une page tierse pour passer en variable GET ou POST la variable JS.

Ou alors si, il y as une autre possibilité, tu fais un cookie.
Tu le crée un JS avec les valeurs voulues, et tu l'exploite en PHP.
Mais attention à pas l'exploiter avant de l'avoir crée :D
HéHéHé


e-kiwi
Modérateur
Modérateur
 
Messages: 15815
Enregistré le: 23 Déc 2003

Message le Mar Mar 04, 2008 8:29

faire executer du php par du js , il me semble que ca s'appelle... : AJAX ;)

bproductiv
WRInaute accro
WRInaute accro
 
Messages: 4218
Enregistré le: 27 Déc 2004

Message le Mar Mar 04, 2008 8:45

ta div pleine page = 100% (et le conteneur aussi)


UsagiYojimbo
WRInaute accro
WRInaute accro
 
Messages: 12071
Enregistré le: 23 Nov 2005

Message le Mar Mar 04, 2008 8:54

Onthisplanet a écrit:Et on peut récupérer des variables js avec le php, ensuite ?


Comme dit plus haut, oui, ça se fait se fait sans souci en Ajax :

Code: Tout sélectionner
var MyWidth = 800;
var MyHeight = 700;
var xhr_object = null;
if(window.XMLHttpRequest) // Firefox
xhr_object = new XMLHttpRequest();
else if(window.ActiveXObject) // Internet Explorer
xhr_object = new ActiveXObject("Microsoft.XMLHTTP");
else { // XMLHttpRequest non supporté par le navigateur
alert("Votre navigateur ne supporte pas les objets XMLHTTPRequest...");return}
xhr_object.open("GET", "traitement.php?width="+MyWidth +"&height="+MyHeight , false);
xhr_object.send(null);
if   (xhr_object.readyState == 4)
{
   if (xhr_object.responseText!='')
   {
      alert("traitement effectué avec succès");
   }
}

BlackStorm
WRInaute discret
WRInaute discret
 
Messages: 120
Enregistré le: 29 Jan 2008

Message le Mar Mar 04, 2008 9:40

UsagiYojimbo a écrit:Comme dit plus haut, oui, ça se fait se fait sans souci en Ajax :


Arf, j'avais oublié, le pire c'est que j'en utilise :-)
Si j'osais, je dirais quel con de pas y avoir pensé.


Leonick
WRInaute accro
WRInaute accro
 
Messages: 22677
Enregistré le: 8 Aoû 2004

Re: Taille de fenêtre en php

Message le Mar Mar 04, 2008 12:48

Onthisplanet a écrit:Bonsoir,

Je cherche à faire une page qui aurait, en pleine taille sur la fenêtre, une Google Maps. Je dois pour ça définir un DIV de la dimension de la fenêtre.
redéfinis alors ton div avec le DOM (en js)


OTP
Modérateur
Modérateur
 
Messages: 20163
Enregistré le: 16 Déc 2005

Message le Mar Mar 04, 2008 13:22

Merci à tous, je vais regarder ça.
Le div à 100%, c'est tentant tellement c'est simple, mais je ne sais pas si GG maps l'accepte. A voir.

bech
Nouveau WRInaute
Nouveau WRInaute
 
Messages: 3
Enregistré le: 28 Jan 2017

Re: Taille de fenêtre en php

Message le Mer Mai 03, 2017 13:15

La discussion ancienne mais pour ce problème particulier, on ne trouvait pas de solution simple qui fonctionne.

Pas besoin d'Ajax pour laver plus propre. :D J'ai trouvé une solution en utilisant des cookies.

Principe :
- Javascript récupère la largeur et la hauteur de la fenêtre et l'enregistre dans des cookies valables jusqu'à la fermeture du navigateur.
- PHP récupère les valeurs inscrites dans ces cookies.

En mettant le tout dans un seul fichier PHP, ça donne :

Code: Tout sélectionner
<html>

<head>
    <title>Détermination et affichage de la taille de la fenêtre du navigateur</title>
    <meta name=author content="Bernard Chardonneau">
    <meta name=copyleft content="Téléchargement autorisé">
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>

<body>
    <script>document.cookie = "largeur=" + window.innerWidth + "; expires=0"</script>
    <script>document.cookie = "hauteur=" + window.innerHeight + "; expires=0"</script>

<?php
    if (isset ($_COOKIE ['largeur']))
    {
        echo "    Largeur = ".$_COOKIE ['largeur']." pixels<br/>\n";

        if (isset ($_COOKIE ['hauteur']))
            echo "    Hauteur = ".$_COOKIE ['hauteur']." pixels<br/>\n";
        else
            echo "    Hauteur non disponible, réafficher la page<br/>\n";
    }
    else
    {
        if (isset ($_COOKIE ['hauteur']))
        {
            echo "    Hauteur = ".$_COOKIE ['hauteur']." pixels<br/>\n";
            echo "    Largeur non disponible, réafficher la page<br/>\n";
        }
        else
        {
            echo "    Largeur et hauteur non disponibles, réafficher la page<br/><br/>\n";
            echo "    Si ça ne marche toujours pas vérifiez les points suivants :\n";
            echo "    <ul>\n";
            echo "        <li>votre navigateur web doit accepter les cookies</li>\n";
            echo "        <li>votre navigateur web doit utiliser javascript</li>\n";
            echo "        <li>votre navigateur web doit être compatible</li>\n";
            echo "    </ul>\n";
        }
    }
?>
</body>

</html>

L'exécution de cette page permet de comprendre le mécanisme de fonctionnement :
- La première fois que la page est affichée, la taille de la fenêtre n'est pas connue.
- Si on recharge la page, on récupère ses dimensions.

Maintenant, modifions la taille de la fenêtre.
Il faudra recharger la page 2 fois pour en voir les nouvelles dimensions.

- La première fois, javascript récupère les nouvelles dimensions de la fenêtre.
- La fois suivante, PHP affiche les dimensions mesurées.

Si on a besoin d'avoir l'information du premier coup, on peut faire une page de redirection.

Fichier det_taille.html

Code: Tout sélectionner
<html>

<head>
    <title>Détermination de la taille de la fenêtre du navigateur</title>
    <meta name=author content="Bernard Chardonneau">
    <meta name=copyleft content="Téléchargement autorisé">
    <script>document.cookie = "largeur=" + window.innerWidth + "; expires=0"</script>
    <script>document.cookie = "hauteur=" + window.innerHeight + "; expires=0"</script>
    <meta http-equiv="refresh" content="0; url=aff_taille.php">
</head>

<body>
</body>

</html>

Fichier aff_taille.php (partiel)

Code: Tout sélectionner
<html>

<head>
    <title>Affichage de la taille de la fenêtre du navigateur</title>
    <meta name=author content="Bernard Chardonneau">
    <meta name=copyleft content="Téléchargement autorisé">
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>

<body>
<?php
    // ici on met le même script que dans le fichier PHP précédent (ou un autre)
?>
    <br/>
    <a href=det_taille.html>Réactualiser les dimensions</a>
</body>

</html>

Dans le cas de page web avec frames, les dimensions de la fenêtre peuvent être récupérées dans la page contenant le frameset et utilisées immédiatement dans des morceaux de page générés en PHP.

Le bon fonctionnement des scripts ci dessus a été constaté avec plusieurs versions de Firefox, Opera et Google Chrome (bien que ce dernier ne semble pas aimer les serveurs web sur localhost).

Tel quels, ils ne fonctionnent pas ni avec Internet Explorer ni même avec Micro$oft Edge.
Je présume que c'est volontaire de la part du fabricant de ces produits, car dans le cas contraire, ils avaient plus de 10 ans pour assurer la compatibilité de leur javascript.


Formation recommandée sur ce thème :

Formation SEO spéciale Wordpress : apprenez à optimiser le référencement naturel d'un site fait avec Wordpress... Formation Ranking Metrics animée par un expert SEO / Wordpress.

Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.

Lectures recommandées sur ce thème :