// 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なので無効、または上書き設定が処理済み
}