【Bubble】特定のページでブラウザバックを禁止する方法

ノーコードツールBubbleで作るアプリケーションで、特定のページのブラウザの戻るボタンをクリックしても前の画面へ戻れなくするいわゆるブラウザバック禁止の実装方法を紹介します。

実装時に、Bubbleの無料プラグイン「Toolbox」のRun javascriptアクションを使用するため、事前にインストールのご対応だけよろしくお願いいたします。

また、本メディアを運営する「EPICs株式会社」では、ノーコードを活用したアプリ・システム開発を行っております。

従来のスクラッチ開発に比べ、ノーコードツールを活用した開発には以下のメリットがあります。

  • 開発期間をおよそ1/3に抑えられる → 検証や新規事業に向いている
  • 開発費用をおよそ1/3に抑えられる → 浮いた費用を別の領域に利用できる
  • リリース後の改修スピードも早い → PDCAを早く回せる

日本最大級のノーコード開発実績を持つ弊社なら、高度なものもスピーディーに開発することが可能です。ぜひご相談ください。

EPICs株式会社の特徴
  • 日本最大級のノーコード開発実績 → 高度な開発もスピーディー
  • 複数のノーコードツールに対応 → 最適なツール選びで開発費用・期間を最大限抑えられる
  • マーケティングまで支援が可能
目次

実装イメージ

上のサンプル動画は、ブラウザバックを禁止する前のページ=>ブラウザバック禁止ページの遷移イメージです。

遷移前のページの次の画面へボタンをクリックして、ブラウザバック禁止ページへ遷移し、ブラウザの戻るボタンをクリックしても前の画面へ戻れなくなる挙動が今回のゴールです。

※ブラウザの戻るボタンをクリックしたときに、一瞬前の画面がチラつくのはご愛嬌。

Bubbleでブラウザバック禁止を実装する手順

以下の手順でBubbleのWebアプリケーションにおいてブラウザバック禁止を実装します。

  1. ブラウザバック禁止ページの前の画面のPage is loadedイベントでRun javascriptを設定する
  2. ブラウザバック禁止ページのPage is loadedイベントでRun javascriptを設定する

今回の実装ではBubbleのプラグイン「Toolbox」のRun javascriptアクションを使い、ページロード時にjavascriptの処理を実行させます。

Page is loaded イベントは、Bubbleアプリケーションでページが完全に読み込まれたときにトリガーされるイベント。このイベントを利用することで、ページ読み込み後に実行したいアクションや設定を指定することができます。

ブラウザバック禁止ページの前の画面のPage is loadedイベントでRun javascriptを設定する

ブラウザバックを禁止したいページに遷移する前の画面で、以下のJavaScriptコードを実行したいので、Bubbleの「Page is loaded」イベントのStep1で上の添付画像のようにRun javascriptアクションを選択肢、コード欄に下記をペーストします。

// ブラウザのナビゲーションが「戻る」や「進む」ボタンによるものであれば
if (window.performance.navigation.type == 2) {
    // 履歴を一つ進める(ユーザーが「戻る」ボタンを押しても、元のページに留まる)
    history.forward();
}

// ページがアンロードされるときのイベントリスナーを設定
// 何もしないが、ページがキャッシュされないようにするために必要
window.addEventListener("unload", function() {});

// ページが表示されたときのイベントリスナーを設定
window.addEventListener("pageshow", function evt(evt) {
    // ページがキャッシュから読み込まれた場合
    if (evt.persisted) {
        // ページをリロードして最新の状態に更新
        location.reload();
    }
});

1つずつコメントを入れてますが、無くても実行には影響ないのでペーストする際に消してもらって構いません。

ちなみに、window.performance.navigation.type は、Webページがどのようにして現在の状態になったかを示すプロパティです。このプロパティには以下3つのタイプがあり、上記サンプルコードではvalueが2のとき、つまりユーザーがブラウザの戻るボタンを押してページに戻ったことの判定をしています。

value説明
0以下の場合にこの値が設定される。

・ユーザーがリンクをクリックする
・ブックマークから移動する
・他のページからリダイレクトされる
1ユーザーがページをリロード(再読み込み)したときにこの値が設定される。
2ブラウザの戻る・進むボタンを押したときや、history.back() や history.forward() メソッドが呼ばれたときにこの値が設定される。
history.back() は、現在のページから一つ前のページに戻るためのメソッド。このメソッドは、ユーザーがブラウザの「戻る」ボタンをクリックするのと同じ効果を持つ。
history.forward() は、現在のページから一つ先のページに進むためのメソッド。このメソッドは、ユーザーがブラウザの「進む」ボタンをクリックするのと同じ効果を持つ。

ブラウザバック禁止ページのPage is loadedイベントでRun javascriptを設定する

次に、ブラウザバックを禁止したいページ自体で、以下のJavaScriptコードを実行したいので、Bubbleの「Page is loaded」イベントのStep1で上の添付画像のようにRun javascriptアクションを選択肢、コード欄に下記をペーストします。

// 現在のURLを履歴スタックに新しいエントリーとして追加
// これにより、ブラウザの「戻る」ボタンを押してもURLが変わらないようにする
window.history.pushState(null, null, window.location.href);

// ブラウザの「戻る」ボタンが押されたときに発生するイベントに対するリスナーを設定
window.addEventListener('popstate', (e) => {
  // 履歴を一つ進める(ユーザーが「戻る」ボタンを押しても、元のページに留まる)
  history.go(1);
});
【日本最大級のノーコード開発実績】
無料でアプリ・システム開発の相談を受付中

    氏名

    法人名

    メールアドレス

    日中繋がりやすい電話番号

    お問い合わせ詳細 ※分かる範囲でご記入ください

    フォームの送信によりGoogleのプライバシーポリシー利用規約に同意したものとみなされます。

    日本最大級のノーコード開発実績!アプリ・システム開発サービス
    「勉強になった!」「役に立った!」と思っていただけたら、是非シェアもお願いします!
    ノーコード開発ツールを使ったアプリ・システム開発にお困りですか?
    1からの開発も、途中からの開発も、お気軽にEPICsにご相談ください!
    著者・監修者
    大熊滉希
    日本最大級のノーコード開発実績を誇るEPICs株式会社の代表。株式会社DRAFT役員として新規事業のコンサルティングに従事した後、EPICsを創業。ノーコード開発の顧問として上場企業に支援も行っている。
    監修者
    石森裕也
    EPICs株式会社CTO。サイバーエージェントのグループ会社での経験を経てEPICsに参画した。これまでで100件以上のノーコード開発に従事。開発経験は10年。
    目次