Taille de fenêtre en php

WRInaute accro
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
 
WRInaute discret
Salut,

Alors pour passer une variable JavaScript vers du PHP, la réponse est ici :
https://www.webrankinfo.com/forum/t/recuperation-dune-variable-javascript-ds-du-code-php.4128/

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é
 
WRInaute accro
Onthisplanet a dit:
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:
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");
	}
}
 
WRInaute accro
Onthisplanet a dit:
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)
 
WRInaute accro
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.
 
Nouveau WRInaute
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:
<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:
<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:
<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.
 
Discussions similaires
Haut