PageSourceSearch

https://sukinahito.jp/js/checkout/app.js?1790657453

js sukinahito.jp collected 2026-09-30 20:02:49 UTC 5,929 bytes, 149 lines download raw bytes

1// 決済フォームのみで使用するスクリプト
2// 数が増えてきたら分割を検討する
3$(function() {
4
5    var changeQuantityFunc = function() {
6        $('[data-select="numberChange"]').on('change', function() {
7            $("form[data-item-id="+$(this).data('item-id')+"]").submit();
8        });
9    };
10
11    // 変数・関数一覧 ---------------------------------------
12    /**
13     * クリックした要素をトリガーとして対象のスライド表示を切り替える
14     * トリガーと対象はdata属性で判断する
15     * トリガーのtypeによって処理内容を変える
16     *
17     * - trigger: data-slide-trigger="xxx"
18     * - target : data-slide-target="xxx"
19     *
20     * ※初期を非表示にしたい場合は、
21     *   - .mainHead_btnの場合は isUpクラスを
22     *   - data-slide-targetのDOMにdata-hide="1"を
23     */
24    var slideToggleFunc = function() {
25        var $trigger = $('[data-slide-trigger]');
26
27        // 各DOMにトリガーに該当するイベントをひも付ける
28        var addEvents = function() {
29            $trigger.each(function() {
30                switch (this.type) {
31                  case 'checkbox': $(this).on('change', handlers.checkbox); break;
32                  case 'radio'   : $(this).on('change', handlers.radio); break;
33                  default        : $(this).on('click' , handlers.other); break;
34                }
35            });
36        };
37
38        // イベントハンドラー
39        var handlers = {
40            checkbox: function() {
41                var isChecked = $(this).prop('checked'),
42                    target    = $(this).attr('data-slide-trigger'),
43                    $target   = $('[data-slide-target="'+target+'"]');
44
45                if (isChecked) {
46                    $target.stop().slideDown('fast');
47                } else {
48                    $target.stop().slideUp('fast');
49                }
50            },
51            radio: function() {
52                var selected = $(this).attr('data-slide-trigger'),
53                    selectedName = $(this).attr('name'),
54                    $allTarget = $('input[name="'+selectedName+'"]');
55
56                $allTarget.each(function() {
57                    var target  = $(this).attr('data-slide-trigger'),
58                        $target = $('[data-slide-target="'+target+'"]');
59
60                    // animationさせる場合は $target.stop().slideDown/Up('fast');
61                    if (target === selected) {
62                        $target.show();
63                    } else {
64                        $target.hide();
65                    }
66
67                });
68            },
69            other: function() {
70                var target = $(this).attr('data-slide-trigger');
71                $(this).toggleClass('isUp'); // トリガーのアイコンを切り替える
72                $('[data-slide-target="'+target+'"]').stop().slideToggle('fast');
73            }
74        };
75
76        // 初期化
77        return [
78            addEvents()
79        ];
80    };
81
82    /**
83     * 多重送信を防ぐ
84     * - ローディング用のDOMを全体にインサートし、実質ボタンを押せないように
85     * - 戻るボタンは対象外
86     */
87    var preventMultiSubmitFunc = function() {
88        var $nextBtn = $('[data-submit-type="next"]'),
89            $form = $nextBtn.parents('form'),
90            btnName = $nextBtn.attr('name'),
91            $loading = $('<div class="nowloading" id="js-nowloading"><i class="fa fa-spinner fa-spin"></i></div>').hide();
92
93        var clickHandler = function() {
94            // bfcache対策
95            if ($('#js-dmy-post-data').size() > 0) {
96                $('#js-dmy-post-data').remove();
97            }
98            $loading.fadeIn('normal', function() {
99                $form.append($('<input id="js-dmy-post-data" type="hidden" name="'+btnName+'" value="" />')).submit();  // safariなどの.submit()対策
100            });
101            return false;
102        };
103
104        $('body').prepend($loading);
105        $nextBtn.on('click', clickHandler);
106
107        // safariなどのbfcache対策
108        $(window).on('popstate pageshow', function() {
109            $('#js-nowloading').hide();
110        });
111    };
112
113    /**
114     * 地域別送料テーブルの非表示
115     * - slideToggleFunc()で表示された地域別送料テーブルを閉じるための補助的な役割のボタン
116     */
117    var hideAreaPostageTable = function(){
118        $('.js-area-postage-table-hide').on('click', function(){
119            $('[data-slide-trigger="area-postage-table"]').removeClass('isUp');
120            $('[data-slide-target="area-postage-table"]').slideUp('fast');
121        });
122    };
123
124    // 初期化 ---------------------------------------
125    $('[data-hide=1]').hide();
126    changeQuantityFunc();
127    slideToggleFunc();
128    preventMultiSubmitFunc();
129    hideAreaPostageTable();
130});
131
132// GAの計測(GA4以前のバージョン)を決済ページでもできるようにするための処理
133(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
134
135document.addEventListener('DOMContentLoaded', function() {
136    //userのトラッキングID(GA4以前のトラッキングIDのみ対応)
137    var ga_id;
138    if (document.getElementById('dataGaId')) {
139    	ga_id = document.getElementById('dataGaId').getAttribute('data-id');
140    }
141    if (ga_id) {
142        var lp_domain = document.getElementById('dataLpDomain').getAttribute('data-domain');
143        ga('create', ga_id, 'auto', {'name': 'user', 'allowLinker': true});
144        ga('require', 'linker');
145        ga('linker:autoLink', [lp_domain]);
146        ga('user.send', 'pageview');
147    }
148});
149

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.