6月30日まで 新規会員登録とパッケージ出品で 2000円割引クーポンプレゼント! ※無くなり次第終了 ご利用方法

【至急】スマフォでPC版サイトを閲覧した時のリダイレクトエラー修正 - atomitaの提案

【至急】スマフォでPC版サイトを閲覧した時... - atomitaさんの提案詳細

提案文 :
トップページに遷移してしまう問題は下記のため発生しています。
① 自作されたページでは、ユーザーエージェントのみで判定し、リダイレクトしている
② ①のリダイレクトにより遷移したページでは、ユーザーエージェント及びクッキーの値で判定し、リダイレクトしている(リダイレクト先がトップを指定している)


> これらの自作ページには、スマトフォンサイトへリダイレクトさせる為に
>
> <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

ランサー情報

atomita (atomita)
個人 Webエンジニア 沖縄県 実績 1

相手のことを考えて丁寧なメッセージを心がけましょう。 サイト外取引行為 は禁止しております。