トラベルバッグ送信済みフラグリセット (押し負け後のボタン無反応問題対策)

PC向けサイト専用
All-in-One対応

機能概要

PC向けサイトのトラベルバッグで、予定を追加する画面から空室を選択して予約送信した際、満室(押し負け)時に再度予約送信ができなくなる問題を回避します(「確定する」ボタンが反応しなくなる)
(この問題の状態でも、ページリロードをするか、「レストラン」などのメニュー選択をし直すと再送信可能になります)

更新履歴
2024/04/27 初版リリース


※ブックマークレットの登録・利用方法が分からない場合は、基本的な使い方のページを参考にしてください

ブックマークレット文字列

以下の文字列でブックマークレットを登録し、トラベルバッグ(PC向けサイト)の「予定を追加する」画面で使用してください

ダミー登録用の空ページのリンク
スマホの場合
iPhone Safari / Chrome および Android Chrome など
ブックマークレット文字列
PCブラウザの場合
以下のリンクボタンを、ブラウザのブックマークバーへドラッグ&ドロップして登録してください


使い方

ブックマークレットの効果はページをリロードするまで有効です。
このブックマークレットは、事前に呼び出す方法でも、押し負け後に事後に呼び出す方法でもどちらでも機能します。
  1. 通常通り、PC向けサイトのトラベルバッグページから、目的の日付の「予定を追加する」画面を開きます
  2. 事前に呼び出す場合、ページが表示されたらこのブックマークレットを呼び出します
    (特にメッセージは表示されません)
    押し負けしてから事後に呼び出す場合は、押し負け後にこのブックマークレットを呼び出してください
  3. ブックマークレット実行後は、押し負け後の、同じ画面から空き枠の予約送信をする場合でも、通常通り予約送信が行われます

ソースコードおよび処理概要

ブックマークレット化前のソースコードです
ご自身で表示等カスタマイズされたい方はご自由にご利用ください
※ブックマークレット化の方法については記載していません

JavaScriptコード
コピー
(function () {
  const markingElemId = '__travelbag_processed_flag_reset';
  if (document.getElementById(markingElemId)) {
    alert('すでに実行されています');
    return;
  };

  if (!document.querySelector('#js-travelBagComponent') || typeof travelbag === 'undefined' || !travelbag?.getResrvStatusDetail) {
    // 対象外ページ
    alert('このページでは実行できません');
    return;
  };

  const markingElem = document.createElement('div');
  markingElem.id = markingElemId;
  markingElem.style.display = 'none';
  document.body.appendChild(markingElem);

  const callInit = () => {
    if (typeof promiseCheck !== 'undefined' && typeof promiseCheck?.init === 'function') {
      promiseCheck.init();
    };
  };
  const orig_getResrvStatusDetail = travelbag.getResrvStatusDetail;
  travelbag.getResrvStatusDetail = function () {
    callInit();
    return orig_getResrvStatusDetail.apply(this, arguments);
  };
  callInit();
})();