it-swarm-eu.dev

Jak nasměrujete prohlížeč iPhone / Android na m.example.com?

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?

8
JoshFinnie

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.

2
helloandre

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

2
jflaflamme

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.

1
Paul Pi