iPhoneを判別する
Webkit Detect
Webkitからのアクセスを判別するスクリプト。
iPhone/iPod touchに対応してます。
- Detecting WebKit with JavaScript
function isMobile()
の結果で携帯端末のWebkitかどうか(=iPhone/iPod touch かどうか)を判別できるみたい。
適当に組み合わせてリダイレクトかけるなどして使えますかね。
*1
var isMobile = WebKitDetect.isMobile(); if (isMobile) { location.href = ほげほげ; }
修正前に書いてたようにファイル名を置換してリダイレクトしたい場合は
loctionとかってなにー
最初に書いていたのはこれ
var isMobile = WebKitDetect.isMobile(); if (isMobile) { var urlStr = location.search; var ipnUrl = urlStr.replace('PAGE1','ipn_PAGE1'); location.href = ipnUrl; }
location.searchで取得した値に対して置換をかけるようになっています。
ただ、説明として「別のファイルにリダイレクト」、みたいに書いていたのですが、
location.searchではパラメータの変数名と値しかとってこれないため、
これだとファイル名の置換にはならないのでした。
たまたま自分が作業してる環境では、テンプレート名(ファイル名)がパラメータに値として入っていたため、
なんとなく「これを置換してあげれば別ページにリダイレクトできる」と思って書いていました。
そもそもlocationオブジェクトとは…
■ アドレス情報
◆ window.location (e3/N2)
現在表示しているアドレス(URL)に関する情報を持つオブジェクトです。◆ window.location.protocol (e3/N2)
◆ window.location.host (e3/N2)
◆ window.location.hostname (e3/N2)
◆ window.location.port (e3/N2)
◆ window.location.pathname (e3/N2)
◆ window.location.search (e3/N2)
◆ window.location.hash (e3/N2)
URL の各部を示す文字列を返します。href の値が "http://www.yyy.zzz:8000/aaa/bbb/ccc.cgi?KEY=CGI#XYZ" だとすると、それぞれの値は以下のようになります。protocol: "http:"
http://www.tohoho-web.com/js/location.htm
host: "www.yyy.zzz:8000"
hostname: "www.yyy.zzz"
port: "8000"
pathname: "/aaa/bbb/ccc.cgi"
search: "?KEY=CGI"
hash: "#XYZ"
こんな感じで、そのページのURLから色々値を取得できるようになってます。*2
なので、ファイル名を置換->リダイレクトとしたい場合、
ファイル名を取得して置換したいならば「location.pathname」を使う必要がありました。
そもそも、url内の該当文字列を別の文字列に置換してリダイレクトでよければ、以下のようにすれば済みます。
var url = location.href; location.href = url.replace('hoge', 'fuga'); //by id:ama-ch ><
書式
http://www.scollabo.com/banban/jsindex/sample/sample_225.html
元の文字列.replace(文字列1,文字列2)
というわけでフォローアップでした。
もっと勉強します…>< thx id:ama-ch!
*1:id:ama-chにそれじゃできないよって教えてもらったので修正しました。
*2:jsはブラウザによって実装が違うらしいので、色々調べたほうがいいみたい。mozillaはこれ:location - MDC https://developer.mozilla.org/ja/DOM/window.location