PageSourceSearch

https://shokz.co.kr/js/tracking/pages/tracking-cart.js?ver=2609221605

js shokz.co.kr collected 2026-09-30 06:28:15 UTC 20,445 bytes, 439 lines download raw bytes

1
2function ga4_cart_checkout_button(module,button_name){
3    window.dataLayer.push({ "event_parameters": null });
4    window.dataLayer.push({
5        "event":"ga4Event",
6        "event_name":"checkout_button",
7        "event_parameters":{
8            "module":module,
9            "button_name":button_name
10        }
11    });
12}
13
14function ga4_cart_view_cart(value,item_list_id,item_list_name,items){
15    window.dataLayer.push({ "event_parameters": null });
16    window.dataLayer.push({
17        "event":"ga4Event",
18        "event_name":"view_cart",
19        "event_parameters":{
20            "currency":"KRW",
21            "value":value,
22            "item_list_id":item_list_id,
23            "item_list_name":item_list_name,
24            "items":  items
25        }
26    });
27}
28
29function ga4_cart_add_to_cart(button_name,price,item_list_id,item_list_name,items){
30    window.dataLayer.push({ "event_parameters": null });
31    window.dataLayer.push({
32        "event":"ga4Event",
33        "event_name":"add_to_cart",
34        "event_parameters":{
35            "button_name":button_name,
36            "currency":"KRW",
37            "value":price,
38            "item_list_id":item_list_id,
39            "item_list_name":item_list_name,
40            "items":  items
41        }
42    });
43}
44
45function ga4_cart_remove_from_cart2(button_name,value,item_list_id,item_list_name,items){
46    window.dataLayer.push({ "event_parameters": null });
47    window.dataLayer.push({
48        "event": "ga4Event",
49        "event_name": "remove_from_cart",
50        "event_parameters": {
51            "button_name": button_name,
52            "currency": "KRW",
53            "value": value,
54            "item_list_id":item_list_id,
55            "item_list_name":item_list_name,
56            "items": items
57        }
58    });
59}
60
61function ga4_cart_select_item(button_name,item_list_id,item_list_name,items){
62    window.dataLayer.push({ "event_parameters": null });
63    window.dataLayer.push({
64        "event":"ga4Event",
65        "event_name":"select_item",
66        "event_parameters":{
67            "item_list_id":item_list_id,
68            "item_list_name":item_list_name,
69            "currency":"KRW",
70            "button_name":button_name,
71            "items": items
72        }
73    });
74}
75
76function ga4_cart_view_item_list(item_list_id,item_list_name,items){
77    window.dataLayer.push({ "event_parameters": null });
78    window.dataLayer.push({
79        "event":"ga4Event",
80        "event_name":"view_item_list",
81        "event_parameters":{
82            "item_list_id":item_list_id,
83            "item_list_name":item_list_name,
84            "currency":"KRW",
85            "items":  items
86        }
87    });
88}
89
90
91function ga4_cart_delete_product(button_name){
92    window.dataLayer.push({ "event_parameters": null });
93    window.dataLayer.push({
94        "event":"ga4Event",
95        "event_name":"remove_from_cart",
96        "event_parameters":{
97            "button_name":button_name,
98            "module":"cart",
99        }
100    });
101}
102
103autoBindFor('.ga4_cart_sod_bask',function(dom){
104    const is_mobile=g5_is_mobile?true:false;
105    let $totalValue=$(dom).find(is_mobile?'.sod_bsk_cnt strong':'.sod_tot_transac strong').text().replace(/\D/g, '');
106    const h1_text=is_mobile?'장바구니':$(dom).find('h1').text();
107    const item_list_id = "cart_product_list";
108    const item_list_name = "장바구니";
109    let products=[];
110    const list=$(dom).find('.ga4_cart_product_list .ga4_cart_product_list_li');
111    list.each(function(i){
112        const id=$(this).attr('data-itid')
113        if((window.ga4GiftProduct||[]).includes(id)){
114            return true;
115        }
116        const name=$(this).find('.ga4_cart_list_name').data('tracking-list-name')||'';
117        const $price=$(this).find('.ga4_cart_list_price').data('tracking-price');
118        const $quantity=$(this).find('.ga4_cart_sod_qty').data('tracking-sod-qty')||1;
119        const ioid = $(this).data('tracking-ioid');
120        const new_product_id =  id+'_'+ioid;
121        const product=product_dict[id]||{}
122        //兼容新旧版本:新版本规则产品数据从 window.ga4InitData 获取
123        const ga4NewProduct = (window.ga4NewVerProduct||[]).includes(id)
124            ? (window.ga4InitData||[]).find(it => String(it.pro_attribute_id) === String(new_product_id))
125            : null;
126        products.push({
127            "item_id": ga4NewProduct ? ga4NewProduct.item_id : `${product["id1"]||name}`,
128            "item_name": ga4NewProduct ? ga4NewProduct.item_name : `${product["id2"]||name}`,
129            "index":i,
130            "discount": ga4NewProduct ? ga4NewProduct.discount : "0",
131            "item_list_id":item_list_id,
132            "item_list_name":item_list_name,
133            "item_category": ga4NewProduct ? ga4NewProduct.item_category : (product["category"]||null),
134            "item_category2": ga4NewProduct ? ga4NewProduct.item_category2 : (product["category2"]||null),
135            "item_variant": ga4NewProduct ? ga4NewProduct.item_variant : (product["variant"]||null),
136            "item_brand": ga4NewProduct ? (ga4NewProduct.item_brand||"SHOKZ") : "SHOKZ",
137            "price": ga4NewProduct ? ga4NewProduct.price : Number($price),
138            "quantity":Number($quantity),
139            "currency":"KRW",
140        })
141    })
142    const uniqueList = products.filter((item, index, self) =>
143        index === self.findIndex((t) => t.item_id === item.item_id)
144    );
145    ga4_cart_view_cart(Number($totalValue),item_list_id,item_list_name,uniqueList);
146
147    // Criteo viewBasket:购物车全部商品(含赠品,赠品单价 0)
148    if (typeof criteoTrackViewBasket === 'function') {
149        var criteoItems = [];
150        list.each(function () {
151            var $li = $(this);
152            var itId = String($li.attr('data-itid') || '').trim();
153            if (!itId) return;
154            var ioId = String($li.attr('data-tracking-ioid') || $li.attr('data-ioid') || '').trim();
155            var unitPrice = Number($li.find('.ga4_cart_list_price').data('tracking-price'));
156            if (!isFinite(unitPrice)) unitPrice = 0;
157            var qty = Number($li.find('.ga4_cart_sod_qty').data('tracking-sod-qty') || $li.attr('data-ctqty') || 1);
158            if (!isFinite(qty) || qty <= 0) qty = 1;
159            criteoItems.push({
160                id: itId,
161                io_id: ioId,
162                price: unitPrice,
163                quantity: qty,
164            });
165        });
166
167        $(dom).find('.cart_gift_item.is-selected').each(function () {
168            var $gift = $(this);
169            var giftId = String($gift.attr('data-it-id') || '').trim();
170            if (!giftId) return;
171            var giftQty = Number($gift.find('.cart_gift_quantity').val() || 0);
172            if (!isFinite(giftQty) || giftQty <= 0) {
173                var markText = String($gift.find('.cart_gift_qty_mark').text() || '').replace(/[^\d]/g, '');
174                giftQty = Number(markText) || 1;
175            }
176            criteoItems.push({
177                id: giftId,
178                price: 0,
179                quantity: giftQty,
180            });
181        });
182
183        if (criteoItems.length) {
184            criteoTrackViewBasket(criteoItems);
185        }
186    }
187    //进入页面的时候记录数据,但是页面上面有加数量和减数量,数量字段会变更
188    // localStorage.setItem("ga4_cart_product", JSON.stringify(uniqueList));
189
190    $(dom).delegate('.ga4_cart_opt_count_wrap button.ga4_cart_qty_plus','mousedown',function(){
191        //点击加号  添加数量
192        setTimeout(()=>{
193            const li=$(this).parents('li').first();
194            const button_name='+';
195            const id=li.attr('data-itid')
196            const name=li.find('.ga4_cart_list_name').data('tracking-list-name')||'';
197            const $price=li.find('.ga4_cart_list_price').data('tracking-price');
198            const $quantity=1;
199            // console.log(`[GTM EVENT] Click Plus Button ${name}`)
200            const ioid = li.data('tracking-ioid');
201            const new_product_id =  id+'_'+ioid;
202            const a_products=[]
203            const product=product_dict[id]||{}
204            //兼容新旧版本:新版本规则产品数据从 window.ga4InitData 获取
205            const ga4NewProduct = (window.ga4NewVerProduct||[]).includes(id)
206                ? (window.ga4InitData||[]).find(it => String(it.pro_attribute_id) === String(new_product_id))
207                : null;
208            a_products.push({
209                "item_id": ga4NewProduct ? ga4NewProduct.item_id : `${product["id1"]||name}`,
210                "item_name": ga4NewProduct ? ga4NewProduct.item_name : `${product["id2"]||name}`,
211                "index":0,
212                "discount": ga4NewProduct ? ga4NewProduct.discount : "0",
213                "item_list_id":item_list_id,
214                "item_list_name":item_list_name,
215                "item_category": ga4NewProduct ? ga4NewProduct.item_category : (product["category"]||null),
216                "item_category2": ga4NewProduct ? ga4NewProduct.item_category2 : (product["category2"]||null),
217                "item_variant": ga4NewProduct ? ga4NewProduct.item_variant : (product["variant"]||null),
218                "item_brand": ga4NewProduct ? (ga4NewProduct.item_brand||"SHOKZ") : "SHOKZ",
219                "price": ga4NewProduct ? ga4NewProduct.price : Number($price),
220                "quantity":Number($quantity),
221                "currency":"KRW",
222            })
223
224            ga4_cart_add_to_cart(button_name,Number($price),item_list_id,item_list_name,a_products)
225        },500)
226    }
226).delegate('.ga4_cart_opt_count_wrap button.ga4_cart_qty_minus','mousedown',function(){
227        //点击减号  减少数量
228        setTimeout(()=>{
229            const li=$(this).parents('li').first();
230            const button_name='-';
231            const id=li.attr('data-itid')
232            const name=li.find('.ga4_cart_list_name').data('tracking-list-name')||'';
233            const $price=li.find('.ga4_cart_list_price').data('tracking-price');
234            const $quantity=1;
235            // console.log(`[GTM EVENT] Click Minus Button ${name}`)
236            const ioid = li.data('tracking-ioid');
237            const new_product_id =  id+'_'+ioid;
238            const a_products=[]
239            const product=product_dict[id]||{}
240            //兼容新旧版本:新版本规则产品数据从 window.ga4InitData 获取
241            const ga4NewProduct = (window.ga4NewVerProduct||[]).includes(id)
242                ? (window.ga4InitData||[]).find(it => String(it.pro_attribute_id) === String(new_product_id))
243                : null;
244            a_products.push({
245                "item_id": ga4NewProduct ? ga4NewProduct.item_id : `${product["id1"]||name}`,
246                "item_name": ga4NewProduct ? ga4NewProduct.item_name : `${product["id2"]||name}`,
247                "index":0,
248                "discount": ga4NewProduct ? ga4NewProduct.discount : "0",
249                "item_list_id":item_list_id,
250                "item_list_name":item_list_name,
251                "item_category": ga4NewProduct ? ga4NewProduct.item_category : (product["category"]||null),
252                "item_category2": ga4NewProduct ? ga4NewProduct.item_category2 : (product["category2"]||null),
253                "item_variant": ga4NewProduct ? ga4NewProduct.item_variant : (product["variant"]||null),
254                "item_brand": ga4NewProduct ? (ga4NewProduct.item_brand||"SHOKZ") : "SHOKZ",
255                "price": ga4NewProduct ? ga4NewProduct.price : Number($price),
256                "quantity":Number($quantity),
257                "currency":"KRW",
258            })
259            ga4_cart_remove_from_cart2(button_name,Number($price),item_list_id,item_list_name,a_products);
260        },500)
261    }).delegate('.td_del_wrap button.sit_opt_del','mousedown',function(){
262        //点击的x,  删除单个商品
263        ga4_cart_delete_product("X");
264    }).delegate('.od_top_btn button','click',function(){
265
266    }).delegate('.chk_box button','click',function(){
267
268    }).delegate('#sod_bsk_act .btn_submit','mousedown',function(){
269        ga4_cart_checkout_button("Cart Page","바로구매");
270
271        pixel_cart_checkout_start(window.cart_piexl_item);
272    }).delegate('.cart-naverpay .npay_btn_pay','mousedown',function(){
273        ga4_cart_checkout_button("Cart Page","네이버페이구매");
274
275        // console.log("购物车页js文件",window.cart_piexl_item);
276        pixel_cart_checkout_start(window.cart_piexl_item);
277    }).delegate('.naverpay-cart .npay_btn_pay','mousedown',function(){
278        ga4_cart_checkout_button("Cart Page","네이버페이구매");
279
280        pixel_cart_checkout_start(window.cart_piexl_item);
281    })
282
283    // 数量输入框变化埋点
284    $('.ga4_cart_sod_qty').each(function(){
285        var $input = $(this);
286        var originalValue = parseInt($input.val()) || 0;
287
288        // 存储原始值作为data属性
289        $input.data('original-value', originalValue);
290
291        // 监听输入框变化
292        $input.on('change blur', function(){
293            var currentValue = parseInt($(this).val()) || 0;
294            var previousValue = parseInt($(this).data('original-value')) || 0;
295
296            if(currentValue !== previousValue) {
297                // 按照标准方式获取商品信息
298                const li = $(this).parents('li').first();
299                const id = li.attr('data-itid');
300                const name=li.find('.ga4_cart_list_name').data('tracking-list-name')||'';
301                const $price=li.find('.ga4_cart_list_price').data('tracking-price');
302                const quantityDiff = Math.abs(currentValue - previousValue);
303                const ioid = li.data('tracking-ioid');
304                const new_product_id =  id+'_'+ioid;
305                // 获取产品字典信息
306                const product = product_dict[id] || {};
307                //兼容新旧版本:新版本规则产品数据从 window.ga4InitData 获取
308                const ga4NewProduct = (window.ga4NewVerProduct||[]).includes(id)
309                    ? (window.ga4InitData||[]).find(it => String(it.pro_attribute_id) === String(new_product_id))
310                    : null;
311                const a_products = [];
312
313                a_products.push({
314                    "item_id": ga4NewProduct ? ga4NewProduct.item_id : `${product["id1"] || name}`,
315                    "item_name": ga4NewProduct ? ga4NewProduct.item_name : `${product["id2"] || name}`,
316                    "index": 0,
317                    "discount": ga4NewProduct ? ga4NewProduct.discount : "0",
318                    "item_list_id":item_list_id,
319                    "item_list_name":item_list_name,
320                    "item_category": ga4NewProduct ? ga4NewProduct.item_category : (product["category"] || null),
321                    "item_category2": ga4NewProduct ? ga4NewProduct.item_category2 : (product["category2"] || null),
322                    "item_variant": ga4NewProduct ? ga4NewProduct.item_variant : (product["variant"] || null),
323                    "item_brand": ga4NewProduct ? (ga4NewProduct.item_brand||"SHOKZ") : "SHOKZ",
324                    "price": ga4NewProduct ? ga4NewProduct.price : Number($price),
325                    "quantity": Number(quantityDiff),
326                    "currency": "KRW",
327                });
328
329                let $totalValue=$(dom).find(is_mobile?'.sod_bsk_cnt strong':'.sod_tot_transac strong').text().replace(/\D/g, '');
330
331                if(currentValue > previousValue) {
332                    // 数量增加,触发 add_to_cart 事件
333                    ga4_cart_add_to_cart("quantity box",Number($totalValue),item_list_id,item_list_name,a_products)
334                } else if(currentValue < previousValue) {
335                    // 数量减少,触发 remove_from_cart 事件
336                    ga4_cart_remove_from_cart2("quantity box",Number($totalValue),item_list_id,item_list_name,a_products);
337
338                }
339
340                // 更新存储的原始值
341                $(this).data('original-value', currentValue);
342            }
343        });
344    });
345})
346
347autoBindFor('.ga4_cart_related_product',function(dom){
348    $(dom).delegate('li a','mousedown',function(e){
349        //购物车页面 底部商品列表点击
350        const id=getLastId($(this).attr('href'));
351        const item_name = $(this).data("tracking-title");
352        const products=[];
353
354        const $clickedElement = $(e.target);
355        let $buttonName = $(this).data('title');
356
357        let isImg = $clickedElement.hasClass('rp_img');
358        if(isImg){
359            $buttonName = "image_"+$buttonName;
360        }
361
362        // console.log(` related_prd [GTM EVENT] Click Link ${h2}`)
363        const product=product_dict[id]||{}
364        //兼容新旧版本:新版本规则产品数据从 window.ga4InitData 获取
365        const ga4NewProduct = (window.ga4NewVerProduct||[]).includes(id)
366            ? (window.ga4InitData||[]).find(it => String(it.pro_attribute_id) === String(id))
367            : null;
368        products.push({
369            "item_id": ga4NewProduct ? ga4NewProduct.item_id : `${product["id1"]||item_name}`,
370            "item_name": ga4NewProduct ? ga4NewProduct.item_name : `${product["id2"]||item_name}`,
371            "index":0,
372            "discount": ga4NewProduct ? ga4NewProduct.discount : "0",
373            "item_list_id":"cart_other_customer_browsed_products",
374            "item_list_name":"다른 고객이 함께 본 상품",
375            "item_category": ga4NewProduct ? ga4NewProduct.item_category : (product["category"]||null),
376            "item_category2": ga4NewProduct ? ga4NewProduct.item_category2 : (product["category2"]||null),
377            "item_variant": ga4NewProduct ? ga4NewProduct.item_variant : (product["variant"]||null),
378            "item_brand": ga4NewProduct ? (ga4NewProduct.item_brand||"SHOKZ") : "SHOKZ"
379        })
380        ga4_cart_select_item($buttonName,"cart_other_customer_browsed_products","다른 고객이 함께 본 상품",products)
381    })
382})
383
384observeExposure(".ga4_cart_related_product>.ga4_cart_related_product_wrap>.ga4_cart_related_product_list",function(element, entry){
385    let list= $(element).find("ul li");
386    let products=[];
387    list.each(function(i){
388        const id=$(this).data('tracking-id');
389        const name=$(this).find('.rp_cont a').first().data('tracking-title');
390        var price=$(this).data('tracking-price');
391        if( typeof(price) === 'string'){
392            price = Number(price.replace(',',''));
393        }
394        const product=product_dict[id]||{};
395        //兼容新旧版本:新版本规则产品数据从 window.ga4InitData 获取
396        const ga4NewProduct = (window.ga4NewVerProduct||[]).includes(id)
397            ? (window.ga4InitData||[]).find(it => String(it.pro_attribute_id) === String(id))
398            : null;
399
400
401        products.push({
402            "item_id": ga4NewProduct ? ga4NewProduct.item_id : `${product["id1"]||name}`,
403            "item_name": ga4NewProduct ? ga4NewProduct.item_name : `${product["id2"]||name}`,
404            "index":i,
405            "discount": ga4NewProduct ? ga4NewProduct.discount : "0",
406            "item_list_id":'cart_other_customer_browsed_products',
407            "item_list_name":'다른 고객이 함께 본 상품',
408            "item_category": ga4NewProduct ? ga4NewProduct.item_category : (product["category"]||null),
409            "item_category2": ga4NewProduct ? ga4NewProduct.item_category2 : (product["category2"]||null),
410            "item_variant": ga4NewProduct ? ga4NewProduct.item_variant : (product["variant"]||null),
411            "item_brand": ga4NewProduct ? (ga4NewProduct.item_brand||"SHOKZ") : "SHOKZ",
412            "price": ga4NewProduct ? ga4NewProduct.price : price,
413            "quantity":1,
414            "currency":"KRW",
415        })
416    })
417    ga4_cart_view_item_list('cart_other_customer_browsed_products','다른 고객이 함께 본 상품',products)
418},{
419    threshold: 0,
420});
421
422
423
424
425
426function pixel_cart_checkout_start(item){
427    TriplePixel('checkoutStarted', {
428        eventId: 'evt_sub_001',              // ID for cross-platform dedupe (Optional)
429        email: g5_mb_email,           // At least one of email or phone (Required)
430        phone: '',
431        firstName: '',                   // Optional
432        lastName: '',                     // Optional
433        orderId: '',               // System order ID (Optional)
434        cotkn: '',               // Used for order<>journey matching (Optional)
435        lineItems: item,
436        address: { zip: '', city: '', countryCode: '', provinceCode: ''}    // Required
437    });
438}
439

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.