提案文 :
トップページに遷移してしまう問題は下記のため発生しています。
① 自作されたページでは、ユーザーエージェントのみで判定し、リダイレクトしている
② ①のリダイレクトにより遷移したページでは、ユーザーエージェント及びクッキーの値で判定し、リダイレクトしている(リダイレクト先がトップを指定している)
> これらの自作ページには、スマトフォンサイトへリダイレクトさせる為に
>
> <script type="text/javascript">
> if ((navigator.userAgent.indexOf('iPhone') > 0 && navigator.userAgent.indexOf('iPad') == -1) || navigator.userAgent.indexOf('iPod') > 0 || navigator.userAgent.indexOf('Android') > 0) {
> location.href = 'ここに対応したスマートフォンサイトのURLが入力されています';
> }
> </script>
>
> というコートを挿入しています。
①を解決すれば、②によるトップページへのリダイレクトは発生しないので、そこの解決案として、上記引用のスクリプトを以下のものに変えることを提案します。
・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
<script type="text/javascript">
function loadCookie(loadValue) {
if (loadValue) {
var c_data = document.cookie + ";";
c_data = unescape(c_data);
var n_point = c_data.indexOf(loadValue);
var v_point = c_data.indexOf("=", n_point) + 1;
var end_point = c_data.indexOf(";", n_point);
if (n_point > -1) {
c_data = c_data.substring(v_point, end_point);
return c_data;
}
}
}
if (!loadCookie('delflg') && (navigator.userAgent.indexOf('iPhone') > 0 && navigator.userAgent.indexOf('iPad') == -1) || navigator.userAgent.indexOf('iPod') > 0 || navigator.userAgent.indexOf('Android') > 0) {
if (loadCookie('smpflg') == 1) {
location.href = 'ここに対応したスマートフォンサイトのURLが入力されています';
}
}
</script>
・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
以上、よろしくお願いします。
追記 : 2013年11月13日 21:16
追伸
function loadCookie等は/smp/js/pcsmpflg.jsからコピーしたものです。(判定処理を同じにするため)
で、一つに気になるのが if (!loadCookie('delflg')・・・の判定文です。
delflgがtrueなら判定しないようにしたかったように見えるのですが、このままだと、iPod・Androidの場合はdelflgは関係ない状態になっています。
↓を実行すると"true"と表示されるはずです。
<script type="text/javascript">
if (false && false || true){
alert('true');
}
</script>
もしdelflgがtrueなら判定しないようにしたいのであれば下記のようにすべきです。(括弧が増えてます)
if (!loadCookie('delflg') && ((navigator.userAgent.indexOf('iPhone') > 0 && navigator.userAgent.indexOf('iPad') == -1) || navigator.userAgent.indexOf('iPod') > 0 || navigator.userAgent.indexOf('Android') > 0)) {
追記 : 2013年11月14日 12:26
すみません、smpflgの判定が間違っていたので、スクリプトは以下のものに変えてください。
・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
<script type="text/javascript">
function loadCookie(loadValue) {
if (loadValue) {
var c_data = document.cookie + ";";
c_data = unescape(c_data);
var n_point = c_data.indexOf(loadValue);
var v_point = c_data.indexOf("=", n_point) + 1;
var end_point = c_data.indexOf(";", n_point);
if (n_point > -1) {
c_data = c_data.substring(v_point, end_point);
return c_data;
}
}
}
if (!loadCookie('delflg') && (navigator.userAgent.indexOf('iPhone') > 0 && navigator.userAgent.indexOf('iPad') == -1) || navigator.userAgent.indexOf('iPod') > 0 || navigator.userAgent.indexOf('Android') > 0) {
if (loadCookie('smpflg') != 1) {
location.href = 'ここに対応したスマートフォンサイトのURLが入力されています';
}
}
</script>
・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・・
2013-11-13 21:08:19