teratail header banner
teratail header banner
質問するログイン新規登録
JavaScript

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

Q&A

解決済

1回答

405閲覧

ローディング画面について

natsumi201

総合スコア5

JavaScript

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

0グッド

0クリップ

投稿2023/10/02 11:35

0

0

実現したいこと

トップページのローディング画面について質問させてください。
現在、トップページにローディングを実装しています。
なお、ホームページ内のページ遷移からトップページ表示時は、ローディングを非表示にしています。

クライアント様から、検索画面→トップページ表示→検索画面に戻る→再度トップページ表示した際に、ローディングを表示したいとのご要望があり、試行錯誤しているところです。

ちなみに、’loading_bg’クラス・’body’タグは初めからdisplay:none;にしています。
’loading_bg’は、ページ遷移の際に、トップページに行くとローディング画面がちらつくのが気になったためです。
’body’タグは、ローディングが始まる前に一瞬読み込み前の画面が表示されるのが気になり、非表示にした方が気にならずに済んだからです。。。

/* ====================================  ローディング */ $(document).ready(function() { var time = new Date().getTime(); var h = $(window).height(); // セッションストレージから初回訪問のフラグを取得 var isFirstVisit = sessionStorage.getItem('isFirstVisit'); if (!isFirstVisit) { // 初回の訪問時にのみ実行 sessionStorage.setItem('isFirstVisit', 'true'); // セッションストレージに初回訪問情報を保存 showLoadingScreen(); // ローディング画面を表示する関数を呼び出す } else { // 2回目以降の訪問時には非表示 // ページ読み込みの際に非表示にするため、すぐに実行 hideLoadingScreen(); } // すべての読み込みが完了したら実行 $(window).on('load', function() { var now = new Date().getTime(); if (now - time <= 1000) { setTimeout(function() { stopload(); }, 1000 - (now - time)); } else { stopload(); } }); // 5秒たったら強制的にロード画面を非表示 $(function() { setTimeout(function() { stopload(); }, 5000); }); }); function showLoadingScreen() { var h = $(window).height(); $('.loading_bg').height(h).css('display', 'block'); } function hideLoadingScreen() { // フェードアウトのアニメーションを追加 $('.loading_bg').fadeOut(500, function() { // アニメーション完了後、非表示にする $(this).css('display', 'none'); }); } function stopload() { hideLoadingScreen(); // ローディング画面を非表示にする $(".wrapper").animate({ "opacity": 1 }, 500); } // ローディングの直前に表示を戻す document.addEventListener('DOMContentLoaded', function() { document.body.style.display = 'block'; });

試したこと

currentURL 変数を使用して現在のURLを取得し、それが https://〇〇〇.jp であるかどうかをチェックする記述を試してみましたが、間違っているのか思っている動作になりません。

どこを修正したらよいのか、宜しければご教授いただけると幸いです。
質問が分かりにくく申し訳ございません。
よろしくお願いいたします。

$(document).ready(function() { // クッキーまたはセッションストレージから訪問状態を取得 var hasVisited = sessionStorage.getItem('hasVisited'); // ブラウザの戻るボタン操作を検出 window.addEventListener('popstate', function(event) { if (event.state && event.state.hasVisited) { if (window.location.href === 'https://〇〇〇.jp/') { showLoadingScreen(); } } }); if (!hasVisited) { // 初回アクセス時またはページ更新時にのみ表示 sessionStorage.setItem('hasVisited', 'true'); showLoadingScreen(); } // すべての読み込みが完了したら実行 $(window).on('load', function() { stopload(); }); // 5秒たったら強制的にロード画面を非表示 $(function() { setTimeout(function() { stopload(); }, 5000); }); }); function showLoadingScreen() { // ローディング画面を表示 $('.loading_bg').css('display', 'block'); } function hideLoadingScreen() { // フェードアウトのアニメーションを追加 $('.loading_bg').fadeOut(500, function() { // アニメーション完了後、非表示にする $(this).css('display', 'none'); }); } function stopload() { hideLoadingScreen(); // ローディング画面を非表示にする $(".wrapper").animate({ "opacity": 1 }, 500); } // ローディングの直前に表示を戻す document.addEventListener('DOMContentLoaded', function() { document.body.style.display = 'block'; });

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

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

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

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

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

Lhankor_Mhy

2023/10/03 07:02

補足願います。 1. 『検索画面』とはクライアントのサイトにある検索画面という理解でいいですか? 2. 1の通りであるなら、『検索画面→トップページ表示→検索画面に戻る→再度トップページ』というのは、履歴の中で検索画面を2回以上経由した場合、というような意味でいいでしょうか?
natsumi201

2023/10/04 00:06

分かりにくい質問で大変申し訳ありません。 『検索画面』とは、ブラウザの検索画面です。 ブラウザで該当のHPを検索し、検索に出てきたトップページをクリックし表示→ブラウザの検索画面に戻る→再度トップページをクリックした際にローディング画面を表示することが目的です。
Lhankor_Mhy

2023/10/04 00:52

ありがとうございます。 たびたびすみませんが、補足願います。 3. 「ブラウザの検索画面」というのは、Google とかの検索サービスのことかと思うのですが、Bing や Yahoo などいろいろあると思うんですが、対象とするサービスはリスト化されていますか? 4. また、『A検索画面→トップページ表示→A検索画面に戻る→(いろいろなサイトを閲覧する)→B検索画面→再度トップページ』のような場合も含んでよい(判別できないので)ですよね?
natsumi201

2023/10/04 05:30

3.のブラウザに関しては、 ・Google Chrome. ・Firefox. ・ Edge. ・Safari. を対応できれと思います。。。 4.についてですが、仰る通りの場合も含みたいです!
Lhankor_Mhy

2023/10/04 05:38

3 の「ブラウザの検索画面」について、Google などの検索サービスを想定していたのですが、挙げられているものを見るとブラウザの名称のように見えました。natsumi201 さんのおっしゃる「ブラウザの検索画面」とはどういったものでしたでしょうか? ブックマークですか?
natsumi201

2023/10/04 06:11

すみません! 私が勘違いをしていたようです。 検索サービスはリスト化しておりませんが、Google検索がメイン対象になる予定です。
guest

回答1

0

ベストアンサー

お望みの形と違うかもしれませんが、2回目以降の来訪で、リファラがGoogleであった場合にアラートを出すスクリプトは以下の通りです。

js

1const visitedTimes = Number(sessionStorage.getItem("visited")); 2if (visitedTimes > 1 && document.referrer === 'https://www.google.co.jp/') alert('google!'); 3sessionStorage.setItem("visited", visitedTimes + 1)

投稿2023/10/04 09:24

Lhankor_Mhy

総合スコア37488

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

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

natsumi201

2023/10/05 00:20

ありがとうございます! 参考にさせていただきます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.30%

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

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

質問する

関連した質問