Redirekte iphone og Android

Tonny Kluften

Administrator
Takk Dag.
Det ble en javascriptløsning siden jeg ikke fikk tilgang på .htaccess.

Slik:

Kode:
<script type="text/javascript">
// iPhone Version: 
if((navigator.userAgent.match(/iPhone/i)) || (navigator.userAgent.match(/iPod/i))) { 
window.location = "http://m.bookofzeus.com/"; 
} 
// Android Version: 
if(navigator.userAgent.match(/android/i)) { 
window.location = "http://m.bookofzeus.com/"; 
}
</script>
 

adeneo

Medlem
Uten at jeg har testet det, så virker det mer fornuftig å stappe alt i en regex og teste denne for mobile "user agents".

Noe sånt:

HTML:
var mobil = (/iphone|ipad|ipod|android|blackberry|mini|windows\sce|palm/i.test(navigator.userAgent.toLowerCase()));  

if (mobil) {  
      document.location = "http://www.minside.no/mobil.html";  
}


Husk å ha en godt synlig link tilbake til hovedsiden for de som ikke ønsker mobilsiden, og bruk en cookie slik at hvis man har valgt hovedsiden tidligere så slipper man å komme til mobilsiden hver gang man besøker siden.
PHP hadde nok egentlig vært en bedre løsning ettersom man slipper å laste inn hovedsiden før man blir sendt videre til mobilsiden.
 

typisk

Utvikler
Å bruke javascript til dette er ikke bra. Hva om det er avslått? Skal dette brukes i Wordpress eller annet CMS? Om du kan kjøre PHP-kode (krever redigering av header.php i WP) er det uten tvil den beste løsningen (utenom .htaccess).
 

adeneo

Medlem
Men jeg trenger å redirecte iphone til en side, android til en annen, alle andre mobil devices skal ikke redirectes, de skal gå til hovedsiden.

Regnet i grunn med det, jeg bare så det var samme linken i eksemplene dine, og så plutselig for meg en enklere måte å skrive omtrent akkurat det samme på.
Ofte er det nettopp slik at man setter opp en egen side for apple dingser og en for android dingser, og alle de andre dingsene blir for mye greier å ha egne sider for uansett.

Det er nok uansett mange som ønsker den vanlige siden selv om de sitter på en iPad, så en eller annen løsning som ikke gjør det veldig slitsomt med videresendinger osv. er alltid en god ide.

Er ellers enig i at PHP nok er en bedre løsning, men hvem fa3n er det som har javascript slått av, det blir jo som surfe med IE4, eller Lynx (grøss) :eek:
 
Er redirecting til en annen side hele poenget, er handler det om optimalisert design for mobile enheter?

I så fall vil svaret være media queries i CSS3. Har ikke testet det selv ennå, men det skal funke knirkefritt. Det skal være mulig å skille mellom iPhone og iPad. Klarte ikke finne noe om android, så da faller det hele kanskje i grus?

Spesielt avansert er det dog ikke. Sjekk ut artikkelen til WebDesignerWall.com :)

Et lite galleri med fremvisning av nettsider som tar i bruk media queries.
 

Pong

Jeg selger sʇɥƃıluʍop :)
Hvis jeg har forstått ting riktig, så handler css3 (som css og css2) fremdeles om utforming - når du ønsker å ikke bare skjule info, men heller ønsker å ikke sende visse biter til mottakeren, må du gjøre en del ting server-side.
Det er det som er hovedulempen med 'responsive design', for meg.

Uansett: hvis du har lov å kjøre php på serveren:
Kode:
function mobile_user_agent_switch(){
	$device = '';

	if( stristr($_SERVER['HTTP_USER_AGENT'],'ipad') ) {
		$device = "ipad";
	} else if( stristr($_SERVER['HTTP_USER_AGENT'],'iphone') || strstr($_SERVER['HTTP_USER_AGENT'],'iphone') ) {
		$device = "iphone";
	} else if( stristr($_SERVER['HTTP_USER_AGENT'],'blackberry') ) {
		$device = "blackberry";
	} else if( stristr($_SERVER['HTTP_USER_AGENT'],'android') ) {
		$device = "android";
	}

	if( $device ) {
		return $device; 
	}
	return false;
}
Det er jo litt bedre enn javascript.
 

Nextri

Rebel
vil anbefale å gjøre dette i php. Da vi redirekten skje før siden lastes. Ved å bruke javascript, så vil brukeren først laste siden, deretter bli redirektet etter at javascriptet er blitt lastet.
 
Hvis jeg har forstått ting riktig, så handler css3 (som css og css2) fremdeles om utforming - når du ønsker å ikke bare skjule info, men heller ønsker å ikke sende visse biter til mottakeren, må du gjøre en del ting server-side.
Det er det som er hovedulempen med 'responsive design', for meg.

Du tar ikke feil. Metoden din er sånn sett langt bedre enn min med mindre man bare ønsker å endre utformingen. jQuery fungerer f. eks ikke på endel håndholdte enheter, men vil lastes ned uavhengig av dette. Sånn sett kan man spare brukerne for endel bandbredde med metoden din. :)
 

nukleuz

Medlem
Hvis jeg har forstått ting riktig, så handler css3 (som css og css2) fremdeles om utforming - når du ønsker å ikke bare skjule info, men heller ønsker å ikke sende visse biter til mottakeren, må du gjøre en del ting server-side.
Det er det som er hovedulempen med 'responsive design', for meg.

Uansett: hvis du har lov å kjøre php på serveren:
Kode:
function mobile_user_agent_switch(){
	$device = '';

	if( stristr($_SERVER['HTTP_USER_AGENT'],'ipad') ) {
		$device = "ipad";
	} else if( stristr($_SERVER['HTTP_USER_AGENT'],'iphone') || strstr($_SERVER['HTTP_USER_AGENT'],'iphone') ) {
		$device = "iphone";
	} else if( stristr($_SERVER['HTTP_USER_AGENT'],'blackberry') ) {
		$device = "blackberry";
	} else if( stristr($_SERVER['HTTP_USER_AGENT'],'android') ) {
		$device = "android";
	}

	if( $device ) {
		return $device; 
	}
	return false;
}
Det er jo litt bedre enn javascript.
Jo, men jeg ville heller valgt "strpos+strtolower" fremfor "stristr": Pastebin &bull; stristrVSstrpos.php &bull; development.giaever.org
 

adeneo

Medlem
jQuery fungerer f. eks ikke på endel håndholdte enheter, men vil lastes ned uavhengig av dette.

Løsningen på akkurat det problemet (hvis man ikke bruker redirect) er å bruke standard JS før biblioteket lastes inn til å dynamisk sette inn jQuery linken ut i fra hvilken type enhet det er, og så bruke jQuery Mobile på håndholdte enheter.
Kan selvfølgelig også brukes på sider kun for mobil osv.
 
Topp