2012-02-16 17 views
7

Qualcuno può aiutarmi con questo.Come utilizzare userAgent per rilevare il dispositivo mobile

Vorrei rilevare dispositivi come Iphone, BB, andriod e browser per applicare il proprio css specifico per renderlo liquefatto o regolare la risoluzione.

Does andriod e Iphone hanno problemi di risoluzione problemi o css quando si tratta di browser mobile perché ho intenzione di usare lo stesso css per quelli 2 perché so che stanno usando lo stesso browser safari di default.

+0

Penso che tu abbia problemi di risoluzione è necessario un sito web arriverà al 100% su ogni dispositivo. –

+0

yah sto usando% su larghezza e altezza sul mio sito. ma voglio rendere il sito diverso da quello mobile. proprio come Facebook ha la sua versione mobile – Bert

risposta

4

tenta di utilizzare http://www.php.net/get_browser e verificare la presenza di isMobileDevice campo. Potrebbe essere utile solo, ovviamente, se il percorso per browscap.ini è impostato in php.ini. In caso contrario, è possibile utilizzare le classi PHP come https://github.com/garetjax/phpbrowscap

+0

oh bello questo è in PHP. l'ho provato e funziona, ma un problema è se sul cellulare hanno installato un browser diverso. Vorrei essere specifico nel dispositivo in modo che fosse organizzato – Bert

+0

@Bert Controlla il browser mediante la stringa User-Agent inviata con ogni richiesta. Quando il browser non invia l'identificazione in UA non è possibile rilevarlo anche con javascript. Solo, probabilmente, tenendo conto della risoluzione dello schermo. Ma non è necessario sapere che tipo di dispositivo è, solo se è mobile o meno. – Cheery

+0

sì ho provato il codice. utilizzandolo per rilevare il dispositivo, memorizzo in una variabile $ css_iphone = ". css" il collegamento CSS si adatta quindi su un altro dispositivo. im anche utilizzando le query multimediali per questo uno – Bert

6

Ecco un esempio in JavaScript:

var isMobile = navigator.userAgent.match(/(iPhone|iPod|iPad|Android|BlackBerry)/); 

if(isMobile) { 
    // User-Agent is IPhone, IPod, IPad, Android or BlackBerry 
} 

Per verificare la presenza di una specifica stringa User-Agent si può fare:

if(navigator.userAgent.match(/iPhone/)) { 
    // The User-Agent is iPhone 
} 
+0

oh lasciami provare quello .. quindi sarà in javascript? if (isMobile == 'iPhone') – Bert

+0

@Bert - Sì, è javascript e lo si controlla come: 'if (isMobile) {// doQualcosa qui}'. Per verificare solo l'IPhone si potrebbe fare: 'if (navigator.userAgent == 'IPhone')' – Cyclonecode

+0

yah l'ho provato funziona. provo a usare document.getElementById ('id').classList.add ('classe'); document.getElementById ('id'). ClassList.remove ('classe'); da testare. potrei usare jquery per questo. – Bert

0

È possibile utilizzare CSS media query per identificare i diversi dispositivi (in realtà le diverse caratteristiche del dispositivo come dispositivo di larghezza, dpi, ecc)

Per il CSS, si può avere diverse opzioni come avere separati CSS per ogni tipo del dispositivo O con un design fluido che significherebbe avere la stessa scala CSS per diverse dimensioni del dispositivo. Il secondo approccio è leggermente complesso da progettare, ma è molto più flessibile di nuovi dispositivi che possono venire su in futuro ..

+0

sì im utilizzando le query multimediali CSS per la risoluzione per 1024X768 e versioni precedenti. Sto pensando di creare lo stesso aspetto del computer/laptop con l'IPAD o qualsiasi dispositivo 10.1. Lo applicherò anche quando ho la condizione di rilevare ogni dispositivo. – Bert

+0

Questo è l'approccio migliore per avere quando si pensa di realisticamente ... voglio dire ogni anno con tanti dispositivi in ​​arrivo l'amrket, piuttosto che dover creare separata CSS per ciascuno dei dispositivi, è possibile utilizzare il fluido/responsive design e lasciare che il layout si riduca in base al dispositivo su cui è visualizzato. – testndtv

+0

vedo. il tuo assolutamente corretto a causa della diversa risoluzione del dispositivo che rende più difficile per lo sviluppatore web modificare il file css per adattarlo al dispositivo, è meglio utilizzare lo stile fluido per un utilizzo futuro. – Bert

2
<meta name="viewport" content="width=device-width; initial-scale=1.0; maximum-scale=1.0; user-scalable=0;" /> 
<meta name="HandheldFriendly" content="true"/> 
<meta name="MobileOptimized" content="320"/> 
<meta http-equiv="cleartype" content="on" /> 


use this code on your website under <header> tag. 

Ecco il codice per la rivelazione dispositivo mobile.

function isMobile() { 

// Check the server headers to see if they're mobile friendly 
if(isset($_SERVER["HTTP_X_WAP_PROFILE"])) { 
    return true; 
} 

// If the http_accept header supports wap then it's a mobile too 
if(preg_match("/wap\.|\.wap/i",$_SERVER["HTTP_ACCEPT"])) { 
    return true; 
} 

// Still no luck? Let's have a look at the user agent on the browser. If it contains 
// any of the following, it's probably a mobile device. Kappow! 
if(isset($_SERVER["HTTP_USER_AGENT"])){ 
    $user_agents = array("midp", "j2me", "avantg", "docomo", "novarra", "palmos", "palmsource", "240x320", "opwv", "chtml", "pda", "windows\ ce", "mmp\/", "blackberry", "mib\/", "symbian", "wireless", "nokia", "hand", "mobi", "phone", "cdm", "up\.b", "audio", "SIE\-", "SEC\-", "samsung", "HTC", "mot\-", "mitsu", "sagem", "sony", "alcatel", "lg", "erics", "vx", "NEC", "philips", "mmm", "xx", "panasonic", "sharp", "wap", "sch", "rover", "pocket", "benq", "java", "pt", "pg", "vox", "amoi", "bird", "compal", "kg", "voda", "sany", "kdd", "dbt", "sendo", "sgh", "gradi", "jb", "\d\d\di", "moto"); 
    foreach($user_agents as $user_string){ 
     if(preg_match("/".$user_string."/i",$_SERVER["HTTP_USER_AGENT"])) { 
      return true; 
     } 
    } 
} 

// Let's NOT return "mobile" if it's an iPhone, because the iPhone can render normal pages quite well. 
if(preg_match("/iphone/i",$_SERVER["HTTP_USER_AGENT"])) { 
    return false; 
} 

// None of the above? Then it's probably not a mobile device. 
return false; 
} 
    if (isMobile()) { 
    header("location:$mobile"); 
    // if the function returned true, it's a mobile. 
    //echo "mobile"; // delete this line in your code, and uncomment the next line 
// header('Location: http://www.yoursite.mobi/'); // let's redirect the page to the mobile site 

    } 

Spero che questo ti possa aiutare.

+0

ho cercato in rete e ho visto che quella finestra era per controllare il layout sul dispositivo mobile. grazie a questo è quello che ci manca ... – Bert

+7

non mi piace davvero "NON torniamo" mobile "se si tratta di un iPhone" –

-1

Io uso questo:

$mobile= stripos($_SERVER['HTTP_USER_AGENT'], 'mob'); 

Funziona quasi ogni volta.

Javascript

var mobile= navigator.userAgent.toLowerCase().indexOf('mob'); 

-1 se non mobile; qualsiasi altro valore se mobile

0
<?php 

$useragent=$_SERVER['HTTP_USER_AGENT']; 

if(preg_match('/(android|bb\d+|meego).+mobile|avantgo|bada\/|blackberry|blazer|compal|elaine|fennec|hiptop|iemobile|ip(hone|od)|iris|kindle|lge |maemo|midp|mmp|netfront|opera m(ob|in)i|palm(os)?|phone|p(ixi|re)\/|plucker|pocket|psp|series(4|6)0|symbian|treo|up\.(browser|link)|vodafone|wap|windows (ce|phone)|xda|xiino/i',$useragent)||preg_match('/1207|6310|6590|3gso|4thp|50[1-6]i|770s|802s|a wa|abac|ac(er|oo|s\-)|ai(ko|rn)|al(av|ca|co)|amoi|an(ex|ny|yw)|aptu|ar(ch|go)|as(te|us)|attw|au(di|\-m|r |s)|avan|be(ck|ll|nq)|bi(lb|rd)|bl(ac|az)|br(e|v)w|bumb|bw\-(n|u)|c55\/|capi|ccwa|cdm\-|cell|chtm|cldc|cmd\-|co(mp|nd)|craw|da(it|ll|ng)|dbte|dc\-s|devi|dica|dmob|do(c|p)o|ds(12|\-d)|el(49|ai)|em(l2|ul)|er(ic|k0)|esl8|ez([4-7]0|os|wa|ze)|fetc|fly(\-|_)|g1 u|g560|gene|gf\-5|g\-mo|go(\.w|od)|gr(ad|un)|haie|hcit|hd\-(m|p|t)|hei\-|hi(pt|ta)|hp(i|ip)|hs\-c|ht(c(\-| |_|a|g|p|s|t)|tp)|hu(aw|tc)|i\-(20|go|ma)|i230|iac(|\-|\/)|ibro|idea|ig01|ikom|im1k|inno|ipaq|iris|ja(t|v)a|jbro|jemu|jigs|kddi|keji|kgt(|\/)|klon|kpt |kwc\-|kyo(c|k)|le(no|xi)|lg(g|\/(k|l|u)|50|54|\-[a-w])|libw|lynx|m1\-w|m3ga|m50\/|ma(te|ui|xo)|mc(01|21|ca)|m\-cr|me(rc|ri)|mi(o8|oa|ts)|mmef|mo(01|02|bi|de|do|t(\-| |o|v)|zz)|mt(50|p1|v)|mwbp|mywa|n10[0-2]|n20[2-3]|n30(0|2)|n50(0|2|5)|n7(0(0|1)|10)|ne((c|m)\-|on|tf|wf|wg|wt)|nok(6|i)|nzph|o2im|op(ti|wv)|oran|owg1|p800|pan(a|d|t)|pdxg|pg(13|\-([1-8]|c))|phil|pire|pl(ay|uc)|pn\-2|po(ck|rt|se)|prox|psio|pt\-g|qa\-a|qc(07|12|21|32|60|\-[2-7]|i\-)|qtek|r380|r600|raks|rim9|ro(ve|zo)|s55\/|sa(ge|ma|mm|ms|ny|va)|sc(01|h\-|oo|p\-)|sdk\/|se(c(\-|0|1)|47|mc|nd|ri)|sgh\-|shar|sie(\-|m)|sk\-0|sl(45|id)|sm(al|ar|b3|it|t5)|so(ft|ny)|sp(01|h\-|v\-|v)|sy(01|mb)|t2(18|50)|t6(00|10|18)|ta(gt|lk)|tcl\-|tdg\-|tel(i|m)|tim\-|t\-mo|to(pl|sh)|ts(70|m\-|m3|m5)|tx\-9|up(\.b|g1|si)|utst|v400|v750|veri|vi(rg|te)|vk(40|5[0-3]|\-v)|vm40|voda|vulc|vx(52|53|60|61|70|80|81|83|85|98)|w3c(\-|)|webc|whit|wi(g |nc|nw)|wmlb|wonu|x700|yas\-|your|zeto|zte\-/i',substr($useragent,0,4))) 

header('Location: http://detectmobilebrowser.com/mobile'); 

?> 
Problemi correlati