// LPのチャットで購入ボタンを押してカートへ移った直後(受付番号と鍵付き)は、本体の読み込みを待たずに // 先に覆いを出して、カート画面が見えないようにする。続きはシナリオ側(CHATBAG_LP_HANDOFF)が引き継ぐ (function () { try { if (!/[?&]cbtok=[0-9a-f]{32}(?:&|$)/.test(location.search) || !/cbk=[A-Za-z0-9_-]{43}/.test(location.hash)) { return; } if (document.getElementById('cbHandoffOverlay')) { return; } var ov = document.createElement('div'); ov.id = 'cbHandoffOverlay'; ov.innerHTML = '
ご注文処理中
'; (document.body || document.documentElement).appendChild(ov); setTimeout(function () { if (!window.__cbHandoffTook && ov.parentNode) { ov.parentNode.removeChild(ov); } }, 30000); } catch (e) {} })(); //指定パラメータの取得 function chatBaGetQueryParams() { const params = new URLSearchParams(window.location.search); return { CDID: params.get('CDID'), ChatbagPvMode: params.get('ChatbagPvMode') }; } // パラメータをチェックして条件に合う場合に分岐 function ChatBagLoadTargetScripts() { const { CDID, ChatbagPvMode } = chatBaGetQueryParams(); let head = document.getElementsByTagName('head')[0]; let script = document.createElement('script'); script.type = "text/javascript"; script.charset = "UTF-8"; var __allow = ["3910","3702","3969","3967","4033","4035","5880","5881"]; var __scn = new URLSearchParams(window.location.search).get('cbscn'); var __id = (__scn && __allow.indexOf(String(__scn)) !== -1) ? String(__scn) : "2005"; if (!isNaN(CDID) && ChatbagPvMode === 'ON') { script.src = "https://sv01.chatbag.jp/testcload2/" + __id + "/"; } else { script.src = "https://sv01.chatbag.jp/cload2/" + __id + "?mode=in"; } head.appendChild(script); } // --- ここから追記:chat_id + URL ごとの挙動上書き(GTMを触らずに制御する) --- var __cbOv = ({"3702":[{"url":"/ikumo_google_kw_aeon_sp","pid":"M2008NE","cart":"testitem8","scn":"3702"}],"3604":[{"url":"/ikumo_google_kw_aeon_sp","pid":"L2009NBft","cart":"testitem8","scn":"5881"}]})["2005"] || []; var __cbTake = false; (function () { for (var i = 0; i < __cbOv.length; i++) { var o = __cbOv[i]; if (o.url && window.location.href.indexOf(o.url) === -1) { continue; } __cbTake = true; if (o.disable) { return; } // このURLではこのタグを動かさない var ex = o.scn ? ("&cbscn=" + o.scn) : ""; var mk = function (abs) { try { var u = new URL(abs); } catch (e) { return null; } return u.origin + u.pathname + "?&chatcart=" + o.cart + ex + "&firstURL=" + encodeURIComponent(abs); }; var rw = function () { var as = document.getElementsByTagName('a'); for (var k = 0; k < as.length; k++) { var a = as[k]; if (!a.getAttribute('href')) { continue; } var abs = a.href; if (abs.indexOf(o.pid) === -1 || abs.indexOf('chatcart=') !== -1) { continue; } var nu = mk(abs); if (nu) { a.href = nu; } } }; if (o.inline) { // LP上でチャットを開く。 // auto : LPを開いた時点で開く(即ボット) // それ以外 : 該当CTAのクリックで開く(通常ボット)。クリックで遅れて読み込まれた // 場合は、遷移を取り消してから開く var W = window; var boot = function (abs) { if (W.__cbInlineStarted) { return; } W.__cbInlineStarted = true; W.__chatBagBackUrl = mk(abs) || W.__chatBagBackUrl; // フォーム入力段階で使う遷移先 if (o.auto) { // 即ボット:シナリオ冒頭の読み込み中の白い画面(元はカートを隠すためのもの)を LP 上では出さない。 // 出すと LP 表示後、チャットが開くまでの間に画面が一度白くなる var hideLd = document.createElement('style'); hideLd.textContent = 'body > #loader{display:none!important}'; (document.head || document.documentElement).appendChild(hideLd); } var sc = document.createElement('script'); sc.type = "text/javascript"; sc.charset = "UTF-8"; sc.src = "https://sv01.chatbag.jp/cload2/" + (o.chat || "2005") + "?mode=in"; document.getElementsByTagName('head')[0].appendChild(sc); var t0 = Date.now(); var iv = setInterval(function () { if (W.UriSform && typeof W.UriSform.ChatOpen === 'function') { clearInterval(iv); // LP は width=640 固定なので、チャットを開いている間だけカートと同じ画面設定にする var vp = document.querySelector('meta[name="viewport"]'); var vpOrig = vp ? vp.getAttribute('content') : null; var setVp = function (c) { if (!vp) { vp = document.createElement('meta'); vp.name = 'viewport'; document.head.appendChild(vp); } vp.setAttribute('content', c); }; // 画面幅の切り替えは、チャットを開く処理が LP 本体を隠したのと同じ瞬間に行う。 // 先に切り替えると、チャットが出るまでの間に LP がスマホ幅で描き直されて見えてしまう var vpDone = false; var applyVp = function () { if (vpDone) { return; } vpDone = true; setVp('width=device-width, initial-scale=1.0, minimum-scale=1.0, maximum-scale=1.0'); }; var chatShown = function () { var ua = document.getElementById('UriChatAlls'); return (document.body && document.body.style.display === 'none') || (ua && ua.style.display === '' && ua.offsetHeight > 0); }; if (chatShown()) { applyVp(); } else if (W.MutationObserver) { var mo = new MutationObserver(function () { if (chatShown()) { mo.disconnect(); applyVp(); } }); mo.observe(document.documentElement, { attributes: true, attributeFilter: ['style'], subtree: true, childList: true }); setTimeout(function () { mo.disconnect(); applyVp(); }, 5000); } else { applyVp(); } if (typeof W.UriSform.ChatClose === 'function' && !W.UriSform.__cbVpWrapped) { var origClose = W.UriSform.ChatClose; W.UriSform.ChatClose = function () { var r = origClose.apply(this, arguments); if (vpOrig !== null) { setVp(vpOrig); } return r; }; W.UriSform.__cbVpWrapped = true; } try { W.UriSform.ChatOpen(); } catch (e) { W.location.href = W.__chatBagBackUrl; } } else if (Date.now() - t0 > 8000) { clearInterval(iv); W.location.href = W.__chatBagBackUrl; // 開けなければ従来どおりカートへ } }, 50); }; var reopen = function () { try { if (W.UriSform && typeof W.UriSform.ChatOpen === 'function') { W.UriSform.ChatOpen(); } } catch (e) {} }; var findLink = function () { var as = document.getElementsByTagName('a'); for (var k = 0; k < as.length; k++) { if (as[k].getAttribute('href') && as[k].href.indexOf(o.pid) !== -1) { return as[k].href; } } return null; }; W.__cbInlineClick = W.__cbInlineClick || {}; if (!W.__cbInlineClick[o.pid]) { W.__cbInlineClick[o.pid] = true; document.addEventListener('click', function (ev) { var el = ev.target; while (el && el !== document) { if (el.tagName === 'A' && el.getAttribute('href')) { break; } el = el.parentNode; } if (!el || el === document) { return; } var abs = el.href || ''; if (abs.indexOf(o.pid) === -1) { return; } ev.preventDefault(); if (W.__cbInlineStarted) { reopen(); } else { boot(abs); } }, true); } if (o.auto) { var t1 = Date.now(); var tryAuto = function () { var lk = findLink(); if (lk) { boot(lk); } else if (Date.now() - t1 < 10000) { setTimeout(tryAuto, 200); } }; if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', tryAuto); } else { tryAuto(); } return; } // GTM のクリック発火で読み込まれた場合:遷移を取り消してLP上で開く var dl = W.dataLayer || []; for (var j = dl.length - 1; j >= 0; j--) { var ev2 = dl[j]; if (!ev2 || typeof ev2 !== 'object' || ev2.event !== 'gtm.linkClick') { continue; } var el2 = ev2['gtm.elementUrl']; // すでにページ表示時の待ち受けでチャットを開いている場合は何もしない // (ここで stop すると読み込み中のチャット本体まで止めてしまう) if (el2 && el2.indexOf(o.pid) !== -1 && el2.indexOf('chatcart=') === -1 && !W.__cbInlineStarted) { try { W.stop(); } catch (e) {} boot(el2); } break; } return; } rw(); try { new MutationObserver(rw).observe(document.documentElement, {childList:true, subtree:true}); } catch (e) { setInterval(rw, 1000); } // linkClick で遅れて読み込まれた場合は、クリック先を補正して遷移し直す var dl = window.dataLayer || []; for (var j = dl.length - 1; j >= 0; j--) { var ev = dl[j]; if (!ev || typeof ev !== 'object') { continue; } var el = ev['gtm.elementUrl']; if (!el || el.indexOf(o.pid) === -1) { continue; } if (el.indexOf('chatcart=') !== -1) { break; } var nu2 = mk(el); if (nu2) { window.location.replace(nu2); } break; } return; } })(); if (!__cbTake && (window.parent === window.top || typeof UrichanForceStart !== "undefined")) { ChatBagLoadTargetScripts(); }else{ //Iframeなので無効、または上書き設定が処理済み }