PageSourceSearch

https://espclubmoscu.com/dev/js/components/more-load.js?17733070623015

js espclubmoscu.com collected 2026-10-08 04:30:51 UTC 3,015 bytes, 89 lines download raw bytes

1/**
2 * Подгрузка «Показать ещё» — без зависания спиннера.
3 * Работает по клику на .more-load-action внутри .form-more-load.
4 */
5$(function () {
6    function getContainer($form) {
7        var sel = $form.data('container');
8        var $c = sel ? $(sel) : $();
9        if ($c.length) return $c;
10        $c = $form.closest('.block.meeting').find('.row.slides, .row').first();
11        if ($c.length) return $c;
12        return $('.article-container .row').first();
13    }
14
15    function getPager($form) {
16        var $p = $form.find('#pager');
17        if ($p.length) return $p;
18        return $form.find('input[name="PAGEN_1"]');
19    }
20
21    function finishLoading($form, hideForm) {
22        $form.removeClass('loading');
23        if (hideForm) {
24            $form.addClass('stop');
25            $form.find('.more-load-action').prop('disabled', true);
26        }
27    }
28
29    $(document).on('click', '.more-load-action', function (e) {
30        e.preventDefault();
31        var $form = $(this).closest('.form-more-load');
32        if (!$form.length || $form.hasClass('stop') || $form.hasClass('loading')) return;
33
34        var $container = getContainer($form);
35        if (!$container.length) {
36            finishLoading($form, true);
37            return;
38        }
39
40        var $pager = getPager($form);
41        var countPage = parseInt($form.data('countpage'), 10) || 1;
42        var page = parseInt($pager.val(), 10) || 2;
43
44        if (countPage < page) {
45            finishLoading($form, true);
46            return;
47        }
48
49        $form.addClass('loading');
50
51        var url = $form.attr('action') || '';
52        var data = $form.serialize();
53
54        $.ajax({
55            type: 'GET',
56            url: url,
57            data: data,
58            dataType: 'text',
59            timeout: 30000,
60            success: function (raw) {
61                var html = (raw || '').trim();
62                if (!html || html === 'stop') {
63                    finishLoading($form, true);
64                    return;
65                }
66                // Если пришла целая страница вместо фрагмента — не вставляем
67                if (html.indexOf('<!DOCTYPE') !== -1 || html.indexOf('<html') !== -1) {
68                    finishLoading($form, true);
69                    return;
70                }
71                $container.append(html);
72                page++;
73                $pager.val(page);
74                if (page > countPage) {
75                    finishLoading($form, true);
76                } else {
77                    finishLoading($form, false);
78                }
79            },
80            error: function () {
81                finishLoading($form, false);
82            },
83            complete: function () {
84                // На всякий случай — спиннер не должен оставаться навсегда
85                $form.removeClass('loading');
86            }
87        });
88    });
89});

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.