2010-11-30 4 views

Répondre

7

Avez-vous envisagé d'utiliser Modernizr pour détecter le support HTML5? Ceci est PHP pas spécifique car il est fait en JavaScript mais vous pouvez utiliser cet extrait pour charger votre fichier de sauvegarde:

if (Modernizr.geolocation){ 
    // Access using HTML5 
    navigator.geolocation.getCurrentPosition(function(position) { ... }); 
}else{ 
    // Load backup file 
    var script = document.createElement('script'); 
    script.src = '/path/to/your/script.js'; 
    script.type = 'text/javascript'; 
    var head = document.getElementsByTagName("head")[0]; 
    head.appendChild(script); 
} 

(Basé sur http://www.modernizr.com/docs/#geolocation)

+0

bonne idée de créer une balise en JavaScript lui-même. Exactement ce dont j'avais besoin. Merci! – Aayush

+1

yepnope est construit pour ce cas d'utilisation: http://yepnopejs.com/ –

+0

Ah - je ne savais pas à ce sujet. Merci Paul –

0

Vous pouvez vérifier le soutien Géolocalisation en utilisant javascript:

function supports_geolocation() { 
    return !!navigator.geolocation; 
} 

J'ai pris la fonction de la belle Dive into HTML 5.

0

Eh bien, la seule façon de détecter géolocalisation est avec le navigateur , et utilisé comme ceci:

if(navigator.geolocation) 
{ 
    //Geo in Browser 
} 

alors ce que je personnellement faire est de créer une requête Ajax au serveur et faire une redirection comme ceci:

if(navigator.geolocation) 
{ 
    navigator.geolocation.getCurrentPosition(function(position){ 
     /* 
      * Send Position to server where you can store it in Session 
     */ 
     document.location = '/'; //Redirect and use the session data from above 
    }, function(message){ 
     /* 
      * Send false to the server, and then refresh to remove the js geo check. 
     */ 
    }); 
} 

côté serveur que vous feriez quelque chose comme ceci:

<?php /* session/geolocation.php */ 

//Require system files 
include '../MasterBootloader.php'; 

/* 
    * Session is already started in the above inclustion 
*/ 

if(!isset($_SESSION['geo']['checked']) && is_agax_request()) 
{ 
    $_SESSION['geo'] = array(); 
    if(isset($_GET['postition'])) 
    { 
     $_SESSION['geo']['supported'] = true; 
     $_SESSION['geo']['location'] = json_decode($_REQUEST['geo_position']); 
    } 
    $_SESSION['geo']['checked'] = true; 
} 
?> 

maintenant quand le javascript vous redirige, dans l'index, vous pouvez vérifier si le existe avant la sortie de votre html, vous saurez côté serveur si GEO est supporté!

0

Vous pouvez utiliser le script canisuse.js pour détecter si votre navigateur prend en charge la géolocalisation ou non

caniuse.geolocation() 
Questions connexes