![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
スマートフォンからのアクセスを他のページに飛ばすために
どうにか方法がないかと思って、いろいろ調べて勉強しております。
そこで以下のような記述でできることが分かったのですが、
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>
No.2ベストアンサー
- 回答日時:
#1様の説明の通りですが、
ご質問のコードを意訳すると…
リファラーが指定のアドレス(muay-thai-pck.com)を含まず、かつ、ユーザエージェントが
iPhon(かつiPadではない)を含むかiPodを含むか、またはAndroidを含む場合に
location.href = 'url';
を実行する。
というような意味になります。(条件式を文章にするとわかりにくいですが)
location.href = 'url';
はURLが 'url' のサイトへ遷移するという命令で、このままだと「url」という(存在しない)URLに移動しようとしますので、この部分を修正する必要があるでしょう。
同様に、リファラーの部分を変更すればよいのか、そもそも必要なのかといったことは、使用者の意図によりますので私にはわかりません。
No.4
- 回答日時:
リダイレクトよりリンク張った方がいいよ
6インチのスマホでPC用のページみたい人だっているし
Androidだってテレビからカーナビから腕時計まで搭載されるんだから
何でもかんでもスマホ用に飛ばすのは間違い
No.3
- 回答日時:
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の場合は、リダイレクトする処理をしています。
No.1
- 回答日時:
<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で振り分け
するのは必ずしも正しい動作は期待できません。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript フォームが空欄の時にフォームの外をクリックすると、エラーが出るコードを調べています。 1 2023/06/25 11:51
- JavaScript jQueryでのドラッグアンドドロップについて 1 2022/07/07 21:04
- JavaScript HTMLでJavaScriptを使ってパスワードの強化判定のプログラムを作成しています。 一通り作っ 2 2022/10/19 01:41
- JavaScript sessionStorageを調べています。 1 2023/06/20 12:41
- JavaScript JAVASCRIPT 2 2022/04/15 15:10
- JavaScript jsで、switch文で書かれた分をif文にできませんか。 1 2022/07/28 15:10
- JavaScript switch文のswitch(n)の部分を複数の値にするか、if文に変えてほしいです。 1 2022/07/27 17:18
- JavaScript 画像の表示位置 3 2022/12/23 08:25
- JavaScript 1日1回引けるJavaScriptおみくじについて 1 2022/12/12 22:28
- JavaScript 入力フォームの javascript で メールアドレスの正規チェックをを行い、ボタンをクリックして 2 2022/04/27 16:06
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
動的生成したscriptタグが実行...
-
<a href="#" …>の意味を教えて...
-
スマホ上で、左右スワイプで次...
-
idHOGEで取得したinnerText(数...
-
bodyにidをつける理由は何ですか?
-
リンクにマウスポインタをおく...
-
(Javascript)印刷するファイル...
-
SCRIPT5007: 未定義または NULL...
-
別ファイルのfunctionの読み込み方
-
ScriptがTABLEタグの中に表示さ...
-
相対パスと絶対パスの速度
-
datepickerで日付の値を取得したい
-
外部からのjs呼び出しについて。
-
cssにjavascriptを入れる?呼び...
-
ホームディレクトリを示すチル...
-
getElementsByNameで要素が取得...
-
bodyタグのfocus
-
プルダウンと入力を両方行う検...
-
呼出したjsファイル内で他jsフ...
-
function の return 値を表示し...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
javascriptで変数を組み込みたい
-
CGIフォーム一定時間過ぎる...
-
書いたクッキーを読み出してメ...
-
明日の日にちを表示するときは
-
カウントダウンとカウントアッ...
-
動的生成したscriptタグが実行...
-
HTML画面上で文字の大きさを変...
-
¥マークの検索について
-
特定のURLからの訪問者を入室禁...
-
ホームページを見る度にTOP画面...
-
UAによるリダイレクト
-
変数に入れた文字列をindexOfで...
-
HPビルダーで『最終更新日時』...
-
Cookieの回数で閲覧制限、javas...
-
特定URLからの遷移後、指定ULR...
-
ランダム音声と正解・不正解の表示
-
document.getElementById
-
ホームページに定休日のカレン...
-
document.writeの文字列が実行...
-
外部javascriptファイルをjavas...
おすすめ情報