質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

Q&A

解決済

3回答

2222閲覧

SPとPCサイトのひも付けがうまくいかない。

hikaru-ichimura

総合スコア12

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2015/06/05 07:58

こんにちは。拝見いただきありがとうございます。
表題の件なんですが、PCでの挙動は狙い通りに動いてくれるのですが、SPでSPサイトを見ても「PCサイトに移動しますか?」と表示されてしまいます。
これがどうしてなのか、どうすれば直るのか教えていただけると助かります。
ちなみにテストで使用しているデバイスはGalaxyS3です。

よろしくお願いいたします。

下記コード

↓SP用

<!doctype html> <html> <head> <meta charset="utf-8"> <title>無題ドキュメント</title> <link rel="stylesheet" type="text/css" href="style.css"> <script type="text/javascript"> if ((navigator.userAgent.indexOf('iPhone') == -1 && navigator.userAgent.indexOf('iPad') > 0) || navigator.userAgent.indexOf('iPod') == -1 || navigator.userAgent.indexOf('Android') == -1) { if(window.confirm("PCサイトに移動しますか?")){ location.href = '../index.html';} } </script> </head> <body> <p>a</p> <a href="pc.html" id="anchorToPcInSp">PCサイト</a> </body> </html> ---------------------------------------------------------------

↓PC用

<!doctype html> <html> <head> <meta charset="utf-8"> <title>無題ドキュメント</title> <link rel="stylesheet" type="text/css" href="style.css"> <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) { if(window.confirm("スマートフォンサイトに移動しますか?")){ location.href = 'sp/index.html';} } </script> </head> <body> <p>a</p> <a href="../2/sp/pc.html" id="anchorToPcInSp">PCサイト</a> </body> </html> ---------------------------------------------------------------

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

ベストアンサー

lang

1if ((navigator.userAgent.indexOf('iPhone') == -1 && navigator.userAgent.indexOf('iPad') > 0) || navigator.userAgent.indexOf('iPod') == -1 || navigator.userAgent.indexOf('Android') == -1)

この条件文に違和感が・・・

Android の場合、iPod ではないので

navigator.userAgent.indexOf('iPod') == -1

が true になってしまいますね

ここかな?

投稿2015/06/05 08:23

takito

総合スコア3111

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

hikaru-ichimura

2015/06/05 08:34

コメントありがとうございます。 一応PC用のほうは特に問題なく動いているので、PC用の方が原因ではないと考えているのですが、PC用のほうに問題があるんですかね……。
hikaru-ichimura

2015/06/05 08:37

あ、すみません。間違えていました。 ipodのほうが反応しちゃってるってことですね。ありがとうございます。試してみます!
hikaru-ichimura

2015/06/05 08:54

問題のほう解決いたしました。 ipodとandroidの間の||を&&に変えることで直りました。 参考になるご意見ありがとうございました!
guest

0

.indexOf()は第一引数に指定した文字列が最初に現れる位置を返し、見つからなければ-1を返すので、

lang

1navigator.userAgent.indexOf('Android') == -1

だとAndroidという文字列を含まない場合の処理になってしまいます。正しくは

lang

1navigator.userAgent.indexOf('Android') > -1

ですね。

lang

1if (!(navigator.userAgent.indexOf('iPhone') == -1 && navigator.userAgent.indexOf('iPad') > 0) || navigator.userAgent.indexOf('iPod') > -1 || navigator.userAgent.indexOf('Android') > -1) { 2 if(window.confirm("PCサイトに移動しますか?")){ 3 location.href = '../index.html'; 4 } 5}

投稿2015/06/05 08:12

MAGP

総合スコア153

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

MAGP

2015/06/05 08:14

・・・と思ったのですが私もShunsukeIzuiさんと同じ間違いしてますね。すみません
MAGP

2015/06/05 08:16

navigator.userAgentで得られる値を調べてみてはいかがでしょうか?
hikaru-ichimura

2015/06/05 08:25

回答ありがとうございます。 試してみたのですが、変わりませんでした。 Androidじゃない場合にPCサイトに飛ばすので、それは問題ないかと思ったのですが、これってまずかったですか?
hikaru-ichimura

2015/06/05 08:26

あ、すみません。コメント今気づきました。 ありがとうございます。
guest

0

スマホのページで判定は== -1ではなく!= -1ではないでしょうか。

以下修正

lang

1if ((navigator.userAgent.indexOf('iPhone') == -1 && navigator.userAgent.indexOf('iPod') == -1 && navigator.userAgent.indexOf('Android') == -1) || navigator.userAgent.indexOf('iPad') > 0) { 2}

ではないかと思います。
iPadはPC側でいいんですよね。

投稿2015/06/05 08:07

編集2015/06/05 08:16
orange0190

総合スコア1698

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

orange0190

2015/06/05 08:08

すみません。間違いです
hikaru-ichimura

2015/06/05 08:27

いいえ、コメントありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問