1485 sujets

Web Mobile et responsive web design

Je travaille actuellement sur l'adaptation d'un site drupal en site mobile et j'aurai besoin d'un petit renseignement.
Sur ce site il y a une partie contacts avec 3 adresses et sur chaque adresse on peut ouvrir un lien google maps. Lorsque l'on clique sur ce lien, la page se recharge et demande à l'utilisateur s'il accepte que le site récupère sa position et s'il accepte l'itinéraire de sa position actuelle vers l'adresse choisie s'affiche.
Jusque là ça fonctionne bien sauf que lorsque l'utilisateur clique sur le lien je ne voudrai pas que la google maps s'ouvre sur la page actuelle mais qu'elle s'ouvre dans une nouvelle fenêtre ce qui permet alors de proposer à l'utilisateur d'utiliser l'appli google maps si elle est présente sur son téléphone.
J'ai testé le window.open mais ça ne fonctionne pas sur mobile Smiley decu donc j'aurai voulu savoir s'il existait une fonction similaire pour ouvrir une nouvelle fenêtre dans le navigateur mobile ?
Merci par avance pour votre aide Smiley cligne
Le navigateur de base de la majorité des mobiles n'offre pas d'onglet, ni de "fenêtre".

Il y a fort a parier que les concepteurs de mobiles ont volontairement bloqué les instructions javascript forçant l'ouverture d'une nouvelle fenêtre; et heureusement!

Personnellement, quand je clique sur un lien GoogleMap tout simple, mon téléphone me demande d'ouvrir l'application google map et de mettre en marche le GPS... Alors je ne vois pas du tout où il faut ouvrir une nouvelle fenêtre pour proposer l'appli google.
Salut,
Vaxilart a écrit :
Le navigateur de base de la majorité des mobiles n'offre pas d'onglet, ni de "fenêtre".

Il y a fort a parier que les concepteurs de mobiles ont volontairement bloqué les instructions javascript forçant l'ouverture d'une nouvelle fenêtre; et heureusement!

Opera Mini et Opera Mobile offrent la navigation par onglet et ont la faculté d'ouvrir un lien s'ouvrant dans une nouvelle fenêtre dans un nouvel onglet.
Oui c'est vrai! J'oublie qu'ailleurs au monde Opera est parfois un navigateur par défaut Smiley cligne

Ici au Canada Opera n'apparait même pas dans les stats.
En effet plusieurs navigateurs permettent la gestion des fenêtres et c'est essentiellement les derniers smartphones que l'on vise. Ceci dit, suite à ta remarque vaxilart c'est vrai que si je me débrouille pour ne pas gérer plusieurs fenêtres le site pourra être compatible sur davantage de terminaux.

Ma fonction est du genre :

function geo_paris(){
    if(navigator.geolocation){
	navigator.geolocation.getCurrentPosition(function(position){
		var latitude = position.coords.latitude;
		var longitude = position.coords.longitude;
		document.location.href="http://maps.google.fr/maps?saddr="+latitude+","+longitude+"&daddr=3+Rue+de+machin,+Paris";
        });
    }
}
		
$("#paris").click(function(){
	geo_paris();
	return false;
});

Donc lorsque je clique sur mon lien qui a pour id paris par exemple ça exécute geo_paris mais ça m'affiche le site internet de google maps avec une carte et ça ne me propose pas d'ouvrir l'appli google map (et donc de lancer la navigation) comme tu dis vaxilart. Alors qu'habituellement ça le fait ! Le problème vient du document.location.href qui fait forcément recharger la page.

J'avais fais un essai à un moment avec un truc du genre en jquery
$('#paris a').attr('href',"http://maps.google.fr/maps?saddr="+latitude+","+longitude+"&daddr=3+Rue+de+machin,+Paris");

et ça fonctionnait mais là je n'arrive pas à le refaire fonctionner Smiley biggol Peut-être que je l'utilise mal Smiley confus
Comme tu as le lien sur lequel envoyer ton internaute, pourquoi ne pas simplement faire rouler ta fonction automatiquement au chargement de la page et insérer ton lien en tant qu'attribut "href" du lien qui actuellement déclenche ta fonction ?

En fait, je viens de voir que c'est exactement ce que propose ton deuxième code... Normalement, ça devrait marcher sans problème.


function geo_paris(){
    if(navigator.geolocation){
	navigator.geolocation.getCurrentPosition(function(position){
		var latitude = position.coords.latitude;
		var longitude = position.coords.longitude;
		$('#paris a').attr('href',"http://maps.google.fr/maps?saddr="+latitude+","+longitude+"&daddr=3+Rue+de+machin,+Paris");
        });
    }
}

$(function(){
    geo_paris();
});
Justement je ne veux pas lancer la géolocalisation au chargement de la page contacts mais uniquement lorsque l'utilisateur clique sur le lien "google maps".
Voilà mon lien html

<a class="load" href="#_">> Google maps</a>

Lorsque je fais
$('a.load').attr('href',"http://maps.google.fr/maps?saddr="+latitude+","+longitude+"&daddr=3+Rue+de+machin,+Paris");

si l'utilisateur clique sur le lien "google maps", une popup s'ouvre pour demander s'il accepte que l'on récupère ces coordonnées( jusque là tout est ok) et s'il accepte, le href correspondant à "google maps" qui était égal à "#_" est bien remplacé par
"http://maps.google.fr/maps?saddr="+latitude_récupérée+","+longitude_récupérée+"&daddr=3+Rue+de+machin,+Paris"
mais la page ne s'ouvre pas. Il faut que l'utilisateur clique une seconde fois sur "Google maps" pour ouvrir la maps... pas pratique du tout Smiley confus
J'ai essayé avec un getElementById et le résultat est le même je n'arrive pas à lancer l'ouverture de l'url une fois que la position de l'utilisateur a été récupérée et que l'url est à jour. Même en essayant de simuler un click de souris avec un .click ça ne fonctionne pas. Il faut absolument recliquer sur "Google maps" En même temps ça paraitrait logique que le .click ne fonctionne pas sur mobile Smiley ohwell mais du coup je ne sais pas comment faire Smiley sweatdrop
Hum, je n'ai pas le temps de regarder ça plus en profondeur à l'instant, mais c'est intéressant !

Personnellement sur mon Android, quand je clique sur un lien google map ciblant une destination seulement, on me demande automatiquement si je veux donner mes coordonnées et créer un itinéraire; par exemple:

http://steannedesplaines.info/m/monuments.php

Cela dit, je ne sais pas comment c'est géré sur les autres mobiles.
Bin avec mon galaxy s quand je clique sur ton lien, ça me demande si je veux l'ouvrir avec mon navigateur ou avec l'appli google maps du téléphone. Si je choisis l'appli ça m'affiche juste la map de l'adresse et si je choisis le navigateur ça m'affiche l'adresse en me demandant ma position mais ça ne me propose pas d'itinéraire Smiley confus

De toute façon la gestion ici est différente. En effet quand tu fais un lien vers une google maps simple il n'y a pas de problème car tu n'as pas de coordonnées à récupérer. Le problème vient de là en fait parce qu'il faudrait que j'arrive à injecter ce que je récupère dans l'url tout en pouvant lancer cette url juste après sans que l'utilisateur n'ai à cliquer à nouveau... Smiley sweatdrop
Et si possible que ça s'ouvre dans une nouvelle fenêtre Smiley biggol
Merci quand même pour ton aide je vais continuer à chercher et voir si je trouve pas des sites qui proposent cette gestion Smiley nut