【JavaScript】一定時間スクロールされなかったらポップアップを表示する方法

【JavaScript】一定時間スクロールされなかったらポップアップを表示する方法 JavaScript

ユーザーがページを開いた後に何もアクション(特にスクロール)をしないまま一定時間が経過した場合に、注目コンテンツやお知らせなどのポップアップを表示したいケースがあります。この記事では、JavaScriptを使って「一定時間スクロールがなかったときにポップアップを表示する」方法を解説します。

基本の仕組み

以下の条件でポップアップを表示する処理を実装します。

  • ページ読み込み後からカウントを開始
  • ユーザーがスクロールしたらタイマーをリセット
  • 一定時間(例:10秒)スクロールされなければポップアップを表示

HTML:ポップアップの土台

まず、表示させるポップアップのHTMLを用意します。

<div id="popup" style="display: none; position: fixed; bottom: 20px; right: 20px; background: #333; color: #fff; padding: 20px; border-radius: 8px; z-index: 1000;">
  キャンペーン情報をチェック!
  <button onclick="closePopup()">閉じる</button>
</div>

JavaScript:スクロールなしでポップアップ表示

次に、スクロールの有無を監視して、一定時間無動作ならポップアップを表示するJavaScriptを記述します。

let scrollTimer;
let idleTime = 10000; // 10秒(10000ミリ秒)

function showPopup() {
  document.getElementById('popup').style.display = 'block';
}

function closePopup() {
  document.getElementById('popup').style.display = 'none';
}

// タイマーをリセット
function resetTimer() {
  clearTimeout(scrollTimer);
  scrollTimer = setTimeout(showPopup, idleTime);
}

// 初回タイマーセット
resetTimer();

// スクロールイベントでタイマーリセット
window.addEventListener('scroll', resetTimer);

発展:一度表示したら再表示しないようにする方法

一度ポップアップを表示したら、同じセッション内ではもう表示しないようにしたい場合は、フラグを使って制御します。

let hasPopupShown = false;

function showPopup() {
  if (!hasPopupShown) {
    document.getElementById('popup').style.display = 'block';
    hasPopupShown = true;
  }
}

まとめ

ユーザーがスクロールしない=「ページを読んでいない・迷っている」可能性があります。そのタイミングでポップアップを表示することで、ユーザーのアクションを促す導線を作ることができます。

シンプルなコードで導入可能なので、ぜひサイトの目的に合わせてカスタマイズしてみてください。