コンテンツにスキップ

ECサイトのカートボタンと連動したeギフトボタンの購入制御機能

概要

ECサイト上に設置している eギフト購入ボタン(AnyGiftボタン)が「実際のECサイトでは在庫がなく購入できない場合」に誤って購入できないようにするため、ECサイトの カート追加ボタンの状態を監視し、購入不可なら eギフトボタンも購入不可にする機能です。

本機能によりECカート側の在庫の状態をもとにeギフトボタンを制御でき、売越のリスクを低減してeギフトを販売できます。


仕組み

ECカートボタンなど、eギフトボタンの表示を連動させたい要素が、非表示または非活性(押せない状態) の場合には、eギフトボタンが連動して非活性となります。

EC側のDOMが変化すると監視対象のセレクタを再評価し、その時点の状態に合わせてeギフトボタンを更新します。

ボタン表示のチェック項目

指定した要素を監視し、以下のいずれかに当てはまる場合にはeギフトボタンを非活性とします:

チェック項目 チェック内容詳細
要素が見つかるか document.querySelector で対象が見つからない
disabled 属性 <button disabled> または button.disabled === true
aria-disabled 属性 <button aria-disabled="true">
CSS での非表示 display: none または visibility: hidden

監視対象がまだページ上にない間は eギフトボタンを非活性にします。オプションや数量の選択後に対象ボタンが動的に追加・削除された場合も、ページの変化を検知して再判定します。


設定方法

下記の手順でAnyGiftのマーカータグに監視したいタグのクエリセレクタをご指定ください。

通常のAnyGiftマーカータグ

<div data-anygift="marker"></div>

カートボタンと連動してeギフトボタンを制御するタグ

クエリセレクタを指定する際の記法: - ID の場合: #id名 - Class の場合: .クラス名

セレクタは監視対象の1要素だけに一致するように指定してください。同じセレクタに複数の要素が一致する場合は、ページ内で最初に一致した要素だけを監視します。

<div data-anygift="marker" data-anygift-observer="監視したいタグのクエリセレクタ"></div>

設定例

通常のカートボタン

<button id="AddToCartButton" type="button" class="cart-button">
  カートに追加
</button>

AnyGiftのeギフトボタンとの連携

<!-- 通常のカートボタン -->
<button id="AddToCartButton" type="button" class="cart-button">
  カートに追加
</button>

<!-- AnyGiftのeギフトボタン(カートボタンの状態を監視) -->
<div data-anygift="marker" data-anygift-observer="#AddToCartButton"></div>

動作の詳細

シナリオ1:通常時(在庫がある)

ECカート側:「カートに追加」ボタン → 活性(クリック可能)
    ↓ 監視中
AnyGift側:eギフトボタン → 活性(クリック可能)

シナリオ2:在庫がない場合

ECカート側:「カートに追加」ボタン → 非活性または非表示
    ↓ 監視中
AnyGift側:eギフトボタン → 非活性(クリック不可)

シナリオ3:オプション選択による制御

ECカート側:オプション未選択 → 「カートに追加」ボタン非表示
    ↓ 監視中
AnyGift側:eギフトボタン → 非活性(選択待ち)
    ↓
ユーザーがオプション選択
    ↓
ECカート側:「カートに追加」ボタン表示
    ↓ DOM変更を検知して再評価
AnyGift側:eギフトボタン → 活性に復帰

実装のポイント

監視対象を一意にする

色・サイズ別など複数のボタンがある場合も、現在選択中の商品オプションに対応する1つのボタンを識別できるIDまたはセレクタを指定してください。共通クラスで複数要素に一致させると、最初の要素だけが判定に使われます。


よくある質問

Q. 複数のボタンを持つ商品の場合、どうすればいいですか?

現在選択中の商品オプションに対応する1つのボタンを一意に指定してください。複数要素に一致する共通クラスを指定した場合、最初の要素だけが監視されます。

Q. 監視対象が見つからない場合はどうなりますか?

監視対象が見つからない間、eギフトボタンは非活性になります。後から対象が追加されれば再判定します。対象が表示されても非活性のままなら、HTML の構造やセレクタを確認してください。

Q. EC側のボタンが動的に変わる場合はどう更新されますか?

EC側のDOM変更を検知するたびに、指定したセレクタを再評価してeギフトボタンの状態を更新します。更新時間や端末への負荷はECサイトの構成や変更頻度によって異なるため、公開前に実際の利用環境で動作を確認してください。

Q. 複数の異なるセレクタを指定することはできますか?

現在は1つのセレクタのみ指定可能です。複数の異なるセレクタを監視したい場合は、別途お問い合わせください。

Q. JavaScript で動的に変わるボタン要素に対応していますか?

はい、対応しています。JavaScript でボタン要素が動的に追加・削除されたときは、その時点でセレクタを再評価して eギフトボタンの状態を更新します。


トラブルシューティング

eギフトボタンが常に非活性のまま

原因: - セレクタが正しく指定されていない - 監視対象の要素が見つからない

確認項目: 1. HTML の要素を確認 2. セレクタが正しい(ID なら #、Class なら .) 3. ブラウザの開発者ツールで要素が取得できるか確認

// ブラウザコンソールで確認
document.querySelector("#AddToCartButton")  // 結果が null でないことを確認

eギフトボタンが意図せず非活性になる

原因: - セレクタが他の要素も捕捉している - CSS の非表示設定が反映されていない

確認項目: 1. セレクタの指定範囲を確認 2. 意図した要素のみが監視対象か確認 3. ブラウザの開発者ツールで要素の状態を確認

// ブラウザコンソールで確認
document.querySelector(".add-to-cart-button")  // 実際に監視される先頭の要素を確認

サポート

設定に関するご不明な点やご質問は、以下までお問い合わせください。