電子書籍の厳選無料作品が豊富!

スマートフォンからのアクセスを他のページに飛ばすために
どうにか方法がないかと思って、いろいろ調べて勉強しております。
そこで以下のような記述でできることが分かったのですが、
javascriptなどについて詳しくないため、-1や0の意味が分かりません。
-1、0はどういう意味なのでしょうか?


<script type="text/javascript">

if (document.referrer.indexOf('muay-thai-pck.com') == -1 && ((navigator.userAgent.indexOf('iPhone') > 0 && navigator.userAgent.indexOf('iPad') == -1) || navigator.userAgent.indexOf('iPod') > 0 || navigator.userAgent.indexOf('Android') > 0)) {

location.href = 'url';

}

</script>

A 回答 (5件)

#1様の説明の通りですが、



ご質問のコードを意訳すると…

リファラーが指定のアドレス(muay-thai-pck.com)を含まず、かつ、ユーザエージェントが
iPhon(かつiPadではない)を含むかiPodを含むか、またはAndroidを含む場合に
 location.href = 'url';
を実行する。
というような意味になります。(条件式を文章にするとわかりにくいですが)

 location.href = 'url';
はURLが 'url' のサイトへ遷移するという命令で、このままだと「url」という(存在しない)URLに移動しようとしますので、この部分を修正する必要があるでしょう。
同様に、リファラーの部分を変更すればよいのか、そもそも必要なのかといったことは、使用者の意図によりますので私にはわかりません。
    • good
    • 0

たしかにNo.4での回答のように何でも飛ばすのは、違うかもしれませんね。


リンクにするか、confirmで確認するかですね~。
    • good
    • 0

リダイレクトよりリンク張った方がいいよ


6インチのスマホでPC用のページみたい人だっているし
Androidだってテレビからカーナビから腕時計まで搭載されるんだから
何でもかんでもスマホ用に飛ばすのは間違い
    • good
    • 0

navigator.userAgentっていうのが、ブラウザのユーザーエージェントが入っている変数です。


ユーザーエージェントを判別する場合、によく出てきます。

iPhoneのUAはこんな感じ
Mozilla/5.0 (iPhone; CPU iPhone OS 5_0_1 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Mobile/9A405 Safari/7534.48.3


そして、.indexOf("iPhone")や.indexOf('iPad')は、それぞれ前の文字列(例では、ユーザーエージェントですね)にiPhoneやiPadの文字列が何文字目にいるかを調べて何文字目かを数値で返してくれます。
見つからない場合は、-1を返します。

navigator.userAgent.indexOf('iPhone') > 0
は、ユーザーエージェントの1文字目以降にiPhoneという文字があるかどうかを調べています。
navigator.userAgent.indexOf('iPhone')は、13を返すので、13 > 0で、13は0より大きいので、true(真)となります。

&&は&&の左と右のどちらも真の場合は真、そうでない場合は、偽(false)となります。

それをif文と組み合わせてiPhoneかiPadもしくはiPodもしくはAndroidの場合は、リダイレクトする処理をしています。
    • good
    • 0

<script>


str="abchogeabc";
document.write('hoge='+str.indexOf('hoge')+'<br>');
document.write('fuga='+str.indexOf('fuga')+'<br>');
</script>

指定文字が出現する箇所を返しています。
hogeが出現するのが3文字目(0文字目から数えて)ということ
出現しなければ-1

例示では0より大きい「>0」としていますが「>=0」の方が妥当

ちなみにjavascriptは環境依存ですので、javascriptで振り分け
するのは必ずしも正しい動作は期待できません。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!