2010-11-24 16 views

Répondre

0

En fait, je me suis retrouvé avec une solution légèrement différente, et très ridicule, qui utilise des requêtes média et getComputedStyle pour rediriger vers un site mobile si nous sommes sur un appareil de type iPhone.

<style media="only screen and (max-device-width: 480px)">html{border-top-style:dashed;}</style> 

<script> 
if(window.location.search.indexOf("?m=t")==-1 && window.getComputedStyle) { 
    var mobile = false; 

    if(window.getComputedStyle(document.getElementsByTagName("html")[0],null).getPropertyValue("border-top-style")=="dashed") { 
     var mobile = true; 
    } 

    if(mobile) { 
     window.location.replace(window.location+"?m=t"); 
    } 
} 
</script> 

Je suis sûr que j'ai eu l'idée sur Stack Overflow getComputedStyle, mais je ne me souviens pas où.

1

Vous pouvez toujours effectuer la vérification conditionnelle, car les iPhones ajoutent l'iPhone CSS sinon votre CSS normal.

var agent=navigator.userAgent.toLowerCase(); 
var isIPhone = ((agent.indexOf('iphone')!=-1); 

if (isIPhone) 
    document.createElement("style")... //iPhone CSS 
else 
    document.createElement("style")... //normal CSS 
+0

Bien sûr, bien que cela signifie que vous utilisez JavaScript pour appliquer des feuilles de style dans chaque navigateur. –

+3

Vous pouvez également faire ce côté serveur s'il ne s'agit pas simplement d'une page HTML en vérifiant http_user_agent. –

0

ou un simple redirection vers une page sans CSS ou utiliser PHP pour détecter les iPhones et les livrer une page sans style - quelque chose avec un flux de:

if iPhone { 
    echo //page without CSS 
else { 
    echo //page with CSS 
} 
2

Vous pourriez utiliser @media queries:

<link rel="stylesheet" href="noniPhoneStylesheet1.css" media="only screen and (min-device-width:490px)" /> 

ce qui exclurait automatiquement les navigateurs iPhone de télécharger cette feuille de style particulier (la largeur de l'écran de l'iPhone étant 480px); Donc mettre tous les styles que vous voulez cacher de l'iPhone dans cette feuille de style devrait fonctionner. Bien que, évidemment, il bloque également cette feuille de style d'autres périphériques qui respectent les requêtes de médias et ont une largeur d'écran inférieure à 490px.

+0

Je vais essayer. –

+0

Et ... en espérant que cela fonctionne vraiment ... = 0 (je ne l'ai pas essayé, il semble que ça devrait * devrait * ...) –

+0

@Paul, une chance avec cela, ou des commentaires? –