Mám nějaké speciální kódování, které funguje pouze pro prohlížeče HTML5 (jednoduché geolokační materiály). Chci přesměrovat uživatele iPhone a Android na verzi m.example.com mého webu. Jaký je nejlepší způsob, jak toho dosáhnout?
můžete použít detekci UserAgent nebo použít jQuery.support (). Protože hledáte konkrétní funkčnost, můžete je kombinovat a získat to, co chcete.
UserAgent může být ve skutečnosti vaše nejlepší sázka. Udělejte to pomocí souboru .htaccess, abyste snížili požadavky na http a případně před hlavním přesměrováním v případě pomalého připojení nebo pomalého výkonu javascriptu zablokovali hlavní web.
Můžete vidět (většinou) vyčerpávající seznam agentů mobilních uživatelů na stránce wikipedia . Jak vidíte, existují podobnosti mezi výrobci a verzemi, které byste mohli hledat v regulárním výrazu.
Vaše otázka se dotýká dvou částí .. přesměrování a kompatibility html5.
přesměrování
Používám následující .htaccess:
RewriteCond %{HTTP_ACCEPT} "text\/vnd\.wap\.wml|application\/vnd\.wap\.xhtml\+xml" [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "sony|symbian|nokia|samsung|mobile|windows ce|epoc|opera" [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "mini|nitro|j2me|midp-|cldc-|netfront|mot|up\.browser|up\.link|audiovox" [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "blackberry|ericsson,|panasonic|philips|sanyo|sharp|sie-" [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "portalmmm|blazer|avantgo|danger|Palm|series60|palmsource|pocketpc" [NC,OR]
RewriteCond %{HTTP_USER_AGENT} "smartphone|rover|ipaq|au-mic,|alcatel|ericy|vodafone\/|wap1\.|wap2\.|iPhone|Android" [NC]
RewriteRule ^(.*)$ http://m.example.com/ [L,R=302]
Pro php můžete použít tuto knihovnu: http://detectmobilebrowsers.mobi/ ... ale důrazně doporučuji používat htaccess pro zpracování času a bezpečnosti.
Další příklady najdete zde
http://ohryan.ca/blog/2009/02/18/revisiting-mobile-redirection-using-htaccess-rewrite-rules/
Možnosti prohlížeče
Protože můj Android telefon nemá problém s html5 s geolokačním kódem. Můžete zvážit použití Modernizr Javascript Library k detekci schopností klientského prohlížeče navštěvujícího vaši stránku.
Vynikající HTML5 boilerplate šablona používá modernizr z krabice k podpoře tohoto druhu potřeb.
Můj názor je: Navrhuji použít metodu htaccess pro všechno kromě nejnovějších telefonů a prohlížečů podporovaných modernizérem a nechat uživatele [Android a _ iPhone a uživatele Modernizr nechat zkontrolovat podporu funkcí html5 a přesměrovat „zbytek“ na váš “ verze bez geolokace.
Příklad modernizéru:
if (Modernizr.geolocation) {
// do stuff
}else{
// propose mobile version
}
Snad to pomůže
Pokud kódujete pomocí PHP, můžete použít $_SERVER['HTTP_USER_AGENT']
pro kontrolu záhlaví UserAgent, které je téměř skrz jakékoli hlavní mobilní zařízení posláno do skriptu PHP. Potom stačí porovnat hodnotu této záhlaví s funkcí substr
s tím, co potřebuje uvnitř.
Například zařízení Apple budou mít vždy řetězce „iphone“ nebo „ipad“; Zařízení Android budou mít vždy „Android“. Téměř každé mobilní zařízení bude mít v této záhlaví uveden „mobilní“ dílčí řetězec.