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

Messages: 20170

Enregistré le: 16 Déc 2005

Message le Lun Mar 03, 2008 23: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
Haut
10 Réponses
Messages: 963

Enregistré le: 5 Aoû 2003

Message le Lun Mar 03, 2008 23:57

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

Enregistré le: 16 Déc 2005

Message le Mar Mar 04, 2008 7:34

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

Enregistré le: 29 Jan 2008

Message le Mar Mar 04, 2008 8: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é
Haut
Messages: 15815

Enregistré le: 23 Déc 2003

Message le Mar Mar 04, 2008 9:29

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

Enregistré le: 27 Déc 2004

Message le Mar Mar 04, 2008 9:45

ta div pleine page = 100% (et le conteneur aussi)
Haut
Messages: 12288

Enregistré le: 23 Nov 2005

Message le Mar Mar 04, 2008 9: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");
   }
}
Haut
Messages: 120

Enregistré le: 29 Jan 2008

Message le Mar Mar 04, 2008 10: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é.
Haut
Messages: 22678

Enregistré le: 8 Aoû 2004

Message le Mar Mar 04, 2008 13: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)
Haut
Messages: 20170

Enregistré le: 16 Déc 2005

Message le Mar Mar 04, 2008 14: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.
Haut
Messages: 3

Enregistré le: 28 Jan 2017

Message le Mer Mai 03, 2017 14: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.
Haut

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.