2011.03.06
難航
引き続き、自サイトの更新ネタでございます。
先日はiframeを使ったポップアップをiPhone、iPodに読ませないようjavascriptでページを分けた備忘録を書き、最後にiPadの存在を思い出して終えた訳ですが…
勉強しがてらやってみようとこのiPhone・iPodを別ページに飛ばすjavascriptにiPadも追加して、書き換えてみました。
1 2 3 4 5 6 7 |
<script type="text/javascript"> if((navigator.userAgent.match(/iPhone/i)) || (navigator.userAgent.match(/iPod/i))) { if (document.cookie.indexOf("iphone_redirect=false") == -1) { window.location = "hoge_i.html"; } }//iphoen用ページへ </script> |
1 2 3 4 5 6 7 |
<script type="text/javascript"> if ((navigator.userAgent.match(/iPhone/i)) || (navigator.userAgent.match(/iPod/i)) || (navigator.userAgent.match(/iPad/i))) { if (document.cookie.indexOf("iphone_redirect=false") == -1 || document.cookie.indexOf("ipad_redirect=false") == -1) { window.location = "hoge_i.html"; } }//iphoen ipad用ページへ </script> |
始めの条件にiPadを加えるのはいいとして、
つぎの条件が曖昧です。
iPhone_redirectがあるんならiPadにもあるんだろうという、あてずっぽう。
ユーザーエージェントがiPhone、iPod、iPadのいずれかの時(元の条件)、cookieにiphone_redirect=false もしくは ipad_redirect=false という記述がなければ(次の条件)、
hoge_i.htmlへ飛ぶ。
という風になればいいんだろうと書いてみましたが、素人にはこれすらあっているのかわからないのです。うっ。
だいたい==-1の意味からしてわかりません。(早くjavascriptの入門書を買うべきだとは常々)
学習したところ、indexOfが返す値は、文字列が在ったらその位置、なかったら-1。
==はイコール(=だけだとjavascriptでは代入)。
とだいたい理解。
でも、iphone_redirect=false 「redairectが偽」の意味が全然わからないので、なんかきもちわるいけど、Oじろーの不可知の世界でそいういうことになっているんだろうと。
とりあえず、Mac/safari、Mac/firefox、iPhone4では動いております…こわい。
ですが、 <link media=”only screen and (max-device-width: 480px)でのcss振り分けはiPadには働いてないわけで、パソコンのブラウザと同じcssを読んでいて…
うーん、どうしたもんでしょう。
元々がiframe対策で、表示はパソコンと同じで何ら問題はないのですが。出来ないことはなにかちょっと心の片隅にひっかかりますねw
→解決!(2011.7.3)
スポンサーリンク
コメントをどうぞ