IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Viewport et barre d'adresse


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    kap
    kap est déconnecté
    Membre confirmé
    Inscrit en
    Octobre 2005
    Messages
    188
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 188
    Par défaut Viewport et barre d'adresse
    Bonjour à tous,

    Je dois faire du responsive design pour adapter un site à l'affichage sur smartphones. Pour l'instant je m'intéresse seulement au comportement sous IPhone.
    J'ai une iframe dans ma page HTML qui contient une carte Google Maps. Mon but est est que ma page entière tienne sur l'écran (difficulté de scroller avec le doigt si on est sur la carte...). Pour faire ça, je calcule la hauteur de l'iframe en fonction du viewport.
    Pour des raisons de lisibilité, je veux aussi que la barre d'adresse ne s'affiche pas.

    J'arrive plus ou moins à faire ça. Mon problème se situe au changement d'orientation de portrait à paysage. Le viewport ne prend pas en compte la barre d'adresse ce qui fait planter mes calculs...
    Voici le code concerné :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    function fnGetHeight() {
    		var viewportwidth;
    		var viewportheight;
    		// The more standards compliant browsers (mozilla/netscape/opera/chrome/IE7) use window.innerWidth and window.innerHeight
    		if (typeof window.innerWidth != 'undefined') {
    			viewportwidth = window.innerWidth;
    			viewportheight = window.innerHeight;			
    		}
     
    		// IE6 in standards compliant mode (i.e. with a valid doctype as the first line in the document)
    		else if (typeof document.documentElement != 'undefined' && typeof document.documentElement.clientWidth != 'undefined' && document.documentElement.clientWidth != 0) {
    			viewportwidth = document.documentElement.clientWidth;
    			viewportheight = document.documentElement.clientHeight;
    		}
    		// older versions of IE
    		else {
    			viewportwidth = document.getElementsByTagName('body')[0].clientWidth;
    			viewportheight = document.getElementsByTagName('body')[0].clientHeight;
    		}
    		//alert('Your viewport width & height is ' + viewportwidth + 'x' + viewportheight);
    		return viewportheight;
    	}
     
    	function resize(h) {
    		alert("h: " + h);
    		banner = document.getElementById("logo_gauche").firstChild.height;
    		alert(banner);
    		var valeur1 = h;
    		alert("valeur1: " + valeur1);
    		document.getElementById("carte").height = valeur1 + "px";
    	}	
     
    function bob(){
    		if(!window.pageYOffset){ hideAddressBar(); }
    		resize(fnGetHeight());
    	}
     
    	window.addEventListener("orientationchange", bob);
    	window.addEventListener("onresize", bob);
    La page web se trouve ici.

    Merci d'avence pour votre aide !!

  2. #2
    Modérateur

    Avatar de NoSmoking
    Homme Profil pro
    Inscrit en
    Janvier 2011
    Messages
    17 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2011
    Messages : 17 208
    Par défaut
    Bonjour,
    j'ai un peu de mal à comprendre la notion de "barre d'adresse".

    As tu essayé les media queries ?

  3. #3
    kap
    kap est déconnecté
    Membre confirmé
    Inscrit en
    Octobre 2005
    Messages
    188
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 188
    Par défaut
    Bonjour,

    Merci pour ta réponse. Désolé pour les explications pas très compréhensibles

    Par barre d'adresse, j'entends la barre du navigateur (Safari) où l'on peut taper l'URL et faire des recherches. J'adapte bien mon CSS avec des media queries, sauf pour l'iframe où je le gère en JavaScript.
    Je n'arrive pas à faire cohabiter les deux codes JavaScript :
    * celui qui cache la barre du navigateur
    * celui qui spécfie la taille de l'iframe

    Est-ce que c'est plus compréhensible?

  4. #4
    Rédacteur/Modérateur

    Avatar de SylvainPV
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    3 375
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 3 375
    Par défaut
    On ne peut pas cacher la barre d'adresses (URL), elle fait partie du navigateur du client. Néanmoins avec quelques hacks, le plus connu étant de scroller à 1px du bord de la page en Javascript, on peut parvenir à faire en sorte qu'elle soit masquée à l'ouverture de la page.

    Peux-tu nous montrer le code de la fonction hideAdressBar() ?

  5. #5
    kap
    kap est déconnecté
    Membre confirmé
    Inscrit en
    Octobre 2005
    Messages
    188
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 188
    Par défaut
    Oups, pardon, je pensais l'avoir mis dans le premier message... Effectivement, c'est ce que fait le code que j'ai trouvé : un scroll d'un pixel.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    	function hideAddressBar(){
    		if(!window.location.hash){
    			if(document.height < window.outerHeight){
    				document.body.style.height = (window.outerHeight + 50) + 'px';
    			}
    			setTimeout( function(){ window.scrollTo(0, 1); }, 50 );
    		}
    	}

  6. #6
    Rédacteur/Modérateur

    Avatar de SylvainPV
    Profil pro
    Inscrit en
    Novembre 2012
    Messages
    3 375
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2012
    Messages : 3 375
    Par défaut
    Bon il y a peu de chances que tu parviennes à masquer automatiquement la barre d'URL à tous les coups, mais essaie quand même ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    function hideAddressBar() {
          window.scrollTo(0, 1);
    }
     
    function bob(){
          resize(fnGetHeight());
          setTimeout(hideAddressBar, 0);                
    }
     
    addEventListener("orientationchange", bob);
    addEventListener("resize", bob);
    addEventListener("load", bob);

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Sécuriser barre d'adresses IE
    Par bendj dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 09/11/2005, 08h04
  2. Affichage URL dans la barre d'adresse
    Par NicoNGRI dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 06/09/2005, 14h11
  3. changer l'icone d'une page dans la barre d'adresse/bookmark
    Par Draganthyr dans le forum Webdesign & Ergonomie
    Réponses: 2
    Dernier message: 10/06/2005, 16h03
  4. Reprendre une date dans la barre d'adresse.
    Par kmayoyota dans le forum ASP
    Réponses: 32
    Dernier message: 03/09/2004, 08h46
  5. [jsp][jetty]recuperer l'url dans la barre d'adresse
    Par maxvador dans le forum Servlets/JSP
    Réponses: 4
    Dernier message: 07/06/2004, 14h33

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo