巴裡 小川軒のお歳暮ギフト|大切な方に感謝のご挨拶を贈りませんか – 巴裡小川軒 コンテンツにスキップ

カート (0)

カート内に商品がありません。
ショップに戻る

【NEW】お歳暮のご注文を受付開始いたしました。
  • 最初に必ずお読みください
  • 商品
    • 元祖レイズン・ウイッチ
      • 10個入り・5個入り
      • 3個入り(紙袋付き)
      • 小川軒のオリジナルクッキー
    • 焼き菓子(詰め合わせ)
      • 焼菓子詰め合わせ
      • クッキー詰め合わせ
    • 焼き菓子(単品)
      • フロランタン
      • マドレーヌ
      • ふくろうキャラメルサブレ
      • ダコワーズ
      • ネーブルパウンド
      • ノアショコラ
      • フルーツケーキ
      • マドレーヌ
      • リーフパイ
    • 手提げ袋
      • 小川軒のオリジナルクッキー
      • 焼き菓子の詰め合わせ
  • FAQ
  • 大口のご注文
  • 巴裡 小川軒の歴史
  • 巴裡 小川軒 ブランドサイト
  • ログイン
巴裡小川軒
  • 最初に必ずお読みください
  • 商品
    • 元祖レイズン・ウイッチ

      • 10個入り・5個入り
      • 3個入り(紙袋付き)
      • 小川軒のオリジナルクッキー
    • 焼き菓子(詰め合わせ)

      • 焼菓子詰め合わせ
      • クッキー詰め合わせ
    • 焼き菓子(単品)

      • フロランタン
      • マドレーヌ
      • ふくろうキャラメルサブレ
      • ダコワーズ
      • ネーブルパウンド
      • ノアショコラ
      • フルーツケーキ
      • マドレーヌ
      • リーフパイ
    • 手提げ袋

    • 小川軒のオリジナルクッキー
    • 焼き菓子の詰め合わせ
  • FAQ
  • 大口のご注文
  • 巴裡 小川軒の歴史
  • 巴裡 小川軒 ブランドサイト
  • 0

定番商品のご案内

元祖レイズンウイッチ
箱に入ったレイズンウイッチ
元祖レイズン・ウイッチ
2198 レビュー
クッキー詰め合わせ
118 レビュー
焼菓子詰め合わせ
239 レビュー
売り切れ
元祖レイズン・ウイッチ (3個入り)
51 レビュー
巴裡小川軒
検索 0 カート

小川軒のお歳暮ギフト

【お歳暮対応】焼菓子詰め合わせ
通常価格 ¥1,600 から
¥1,600 から
【お歳暮対応】元祖レイズン・ウイッチ
通常価格 ¥800 から
¥800 から
  • 最初に必ずお読みください
  • 商品一覧
  • FAQ
  • 大口のご注文
  • 巴裡 小川軒の歴史
  • 巴裡 小川軒 公式サイト
  • 巴裡 小川軒 採用サイト
  • お知らせ
  • みなさまからのレビュー
  • 個人情報の取扱い
  • 特定商取引法に基づく表記
  • 返金ポリシー
  • 配送ポリシー
  • 利用規約
Newsletter

巴裡 小川軒からの最新情報をお届けします

巴裡小川軒 公式SNS
  • © 2025, 巴裡小川軒
公式LINE
直前 */ (function () { const cfg = window.__OGAWAKEN__ || {}; if (!cfg.hasHassouShuu) return; // 発送週オプションがある商品だけ const CUSTOM_MSG = cfg.hassouMessage || "お歳暮商品は、同一発送週のお歳暮商品のみ同梱が可能です。"; window.__OGAWAKEN__ = cfg; if (typeof cfg.muteErrors === 'undefined') cfg.muteErrors = false; // あなたのテーマのエラー要素(スクショより) const NATIVE_ERR_SEL = [ '.js-qty__error-message.errors.qty-error', '.js-qty__error-message.qty-error', '.qty-error[role="alert"]', '[data-qty-error-message]' ].join(','); // 1) ネイティブエラーを“この商品ページ内だけ”非表示にするためのスコープCSSを注入 (function injectScopedCSS(){ const style = document.createElement('style'); style.setAttribute('data-ogawaken', 'hide-native-error'); style.textContent = ` product-information ${NATIVE_ERR_SEL.replace(/,/g, ', product-information ')} { display: none !important; } #ogawaken-error { display: block; margin-top: .5rem; font-size: .9rem; line-height: 1.5; } #ogawaken-error.hidden { display: none !important; } /* 既存テーマとトーンを合わせたい場合はここで色等を微調整 */ #ogawaken-error.errors.qty-error { color: #b42318; } /* 例: 赤系 */ `; document.head.appendChild(style); })(); // 2) エラー表示用の専用ノードを、ネイティブエラーの直後に1回だけ作成 function ensureCustomErrorNode() { // 最優先:qty-error のラッパー(スクショだと data-update-id="qty-error-buy_buttons") const native = document.querySelector(NATIVE_ERR_SEL); let anchor = native && native.parentElement ? native.parentElement : null; // フォールバック:product-information 内 if (!anchor) anchor = document.querySelector('product-information') || document.body; let node = document.getElementById('ogawaken-error'); if (!node) { node = document.createElement('span'); node.id = 'ogawaken-error'; node.className = 'errors qty-error hidden'; node.setAttribute('role','alert'); node.setAttribute('aria-live','polite'); anchor.appendChild(node); } return node; } const errNode = ensureCustomErrorNode(); function showCustomError() { if (!errNode) return; errNode.textContent = CUSTOM_MSG; errNode.classList.remove('hidden','active','error'); errNode.style.removeProperty('display'); errNode.removeAttribute('aria-hidden'); } function clearCustomError() { if (!errNode) return; errNode.textContent = ''; errNode.classList.add('hidden'); } // 3) バリアント変更 → いったんエラーを消す(ミュート短時間保持) let muteTimer = null; function engageMute() { cfg.muteErrors = true; clearTimeout(muteTimer); muteTimer = setTimeout(() => { cfg.muteErrors = false; }, 400); // 必要なら 400→600ms 調整 clearCustomError(); } function releaseMute() { cfg.muteErrors = false; clearTimeout(muteTimer); } // 4) “ネイティブ側にエラーが発生した”ことを検知して、専用ノードに表示 // (ネイティブは常に非表示なので見えないが、テキスト変化はフックできる) const mo = new MutationObserver((muts) => { if (!errNode) return; // ネイティブ要素の追加や文字変更を見たら、ミュート中かで出し分け muts.forEach(m => { const nodes = []; m.addedNodes && m.addedNodes.forEach(n => { if (n.nodeType===1) nodes.push(n); }); if (m.type === 'characterData' && m.target && m.target.parentElement) { nodes.push(m.target.parentElement); } nodes.forEach(n => { if (n.matches && (n.matches(NATIVE_ERR_SEL) || n.querySelector && n.querySelector(NATIVE_ERR_SEL))) { if (cfg.muteErrors) clearCustomError(); else showCustomError(); } }); }); }); mo.observe(document.documentElement, { childList: true, subtree: true, characterData: true }); // 初期にも、もしネイティブが内容を持っていたら専用ノードに反映 (function initMirrorFromNative(){ const native = document.querySelector(NATIVE_ERR_SEL); if (!native) return; const txt = (native.textContent || '').trim(); if (txt) { if (cfg.muteErrors) clearCustomError(); else showCustomError(); } })(); // 5) 変更検出(select/radio/スウォッチ/独自イベント) document.addEventListener('change', (e) => { const t = e.target; if (!t) return; const name = (t.getAttribute('name') || '').toLowerCase(); if (name.startsWith('options[') || name === 'id' || t.classList.contains('single-option-selector')) { engageMute(); } }, true); document.addEventListener('click', (e) => { const el = e.target.closest('[data-product-options], .swatch, .product-options, [data-option-index]'); if (el) engageMute(); }, true); window.addEventListener('variant:change', () => engageMute(), true); document.addEventListener('product-form:variant-change', () => engageMute(), true); // 6) 送信(Add to cart)検出でミュート解除 → 以降のエラーは専用ノードで表示 document.addEventListener('submit', (e) => { const form = e.target; if (form && form.action && form.action.indexOf('/cart/add') !== -1) releaseMute(); }, true); document.addEventListener('click', (e) => { const btn = e.target.closest('button, [role="button"], input[type="submit"], a'); if (!btn) return; const name = (btn.getAttribute('name') || '').toLowerCase(); const type = (btn.getAttribute('type') || '').toLowerCase(); if ( name === 'add' || type === 'submit' || btn.classList.contains('product-form__submit') || btn.matches('[data-add-to-cart],[data-action="add-to-cart"],[data-product-form-submit]') ) { releaseMute(); } }, true); document.addEventListener('keydown', (e) => { if (e.key === 'Enter') releaseMute(); }, true); })();