PageSourceSearch

https://www.jfc.go.jp/n/common/js/app.bundle.js

js jfc.go.jp collected 2026-10-01 08:56:40 UTC 25,169 bytes, 707 lines download raw bytes

1/* global Swiper */
2(function (window, $) {
3  'use strict';
4  // Set Namespace
5  var APP = window.APP = window.APP || {};
6
7  // グローバルスコープでisIEを定義
8  var isIE = navigator.userAgent.toLowerCase().indexOf('msie') > -1 ||
9    navigator.userAgent.toLowerCase().indexOf('trident') > -1;
10
11  // ヘッダー高さを確実に取得する関数
12  APP.getHeaderHeight = function() {
13    var $header = $('.l-header');
14
15    if (!$header.length) {
16      return 0;
17    }
18
19    // PC表示の場合(768px以上)
20    if ($(window).width() > 768) {
21      var $headerTop = $('.l-header-top');
22      var $headerBottom = $('.l-header-bottom');
23
24      if ($headerTop.length && $headerBottom.length &&
25          $headerTop.is(':visible') && $headerBottom.is(':visible')) {
26        var topHeight = $headerTop.outerHeight() || 0;
27        var bottomHeight = $headerBottom.outerHeight() || 0;
28        return topHeight + bottomHeight;
29      }
30    }
31
32    var height = $header.outerHeight() || 0;
33
34    if (height === 0 && $header[0]) {
35      height = $header[0].getBoundingClientRect().height;
36    }
37
38    return height;
39  };
40
41  // ページトップボタン制御
42  APP.SetPageTop = function($elm) {
43    var that = this;
44    that.$elm = $elm;
45    that.$body = $('body');
46    that.$footer = $('.l-footer');
47    that.scr = $(window).scrollTop();
48    that.winH = $(window).height();
49    that.maxH = 0;
50
51    $(window).on('load resize scroll', function() {
52      that.update();
53    });
54  };
55  APP.SetPageTop.prototype = {
56    update: function() {
57      var that = this;
58      that.scr = $(window).scrollTop();
59      that.winH = $(window).height();
60      that.maxH = that.$footer.offset().top - that.winH;
61      if (that.scr >= that.maxH) {
62        that.$body.addClass('is-pagetop-fixed');
63        that.$elm.css({'bottom': that.$footer.outerHeight() + 20 +'px'});
64      } else if (that.scr > that.winH/2 && that.scr < that.maxH) {
65        that.$body.addClass('is-pagetop-active').removeClass('is-pagetop-fixed');
66        that.$elm.removeAttr('style');
67      } else {
68        that.$body.removeClass('is-pagetop-active is-pagetop-fixed');
69        that.$elm.removeAttr('style');
70      }
71    }
72  };
73
74  // PCサイズ時の関数
75  var funcPC = function () {
76    // 画像の切り替え(既にPC画像の場合はスキップ)
77    $('.spImg').each(function () {
78      var $img = $(this);
79      var currentSrc = $img.attr('src');
80
81      if (currentSrc && currentSrc.indexOf('_pc.') > -1) {
82        return true;
83      }
84
85      if (currentSrc && currentSrc.indexOf('_sp.') > -1) {
86        var newSrc = currentSrc.replace('_sp.', '_pc.');
87        $img.attr('src', newSrc);
88      }
89    });
90
91    // ★ スライダーのインラインスタイルのみをリセット(クラスは残す) ★
92    $('#usefulInfo .imgLinkList').removeAttr('style');
93    $('#usefulInfo .imgLinkList li').removeAttr('style');
94    $('#usefulInfo .imgLinkList .imgBox').removeAttr('style');
95    $('#usefulInfo .imgLinkList .txtBox').removeAttr('style');
96    $('#usefulInfo .imgLinkList a').removeAttr('style');
97
98    // SP用のアコーディオンイベントを解除
99    $('.hx-outer.close h2').off('click');
100    $('.faqArea dl dt.close').off('click');
101    $('h2.close').off('click');
102    $('h3.close').off('click');
103    $('#linksArea dl dt').off('click');
104    $('.newsBox.news1 th').off('click');
105    $('#main .faq dt').off('click');
106
107    // アコーディオンを開いた状態にする
108    $('.hx-outer.close').next('div').show();
109    $('.faqArea dl dt.close').next().show();
110    $('h2.close').next('div').show();
111    $('h3.close').next('div').show();
112    $('#linksArea dl dd').show();
113    $('.newsBox.news1 td').show();
114  };
115
116  // スマホサイズ時の関数
117  var funcSP = function () {
118    // 画像の切り替え(既にSP画像の場合はスキップ)
119    $('.spImg').each(function () {
120      var $img = $(this);
121      var currentSrc = $img.attr('src');
122
123      if (currentSrc && currentSrc.indexOf('_sp.') > -1) {
124        return true;
125      }
126
127      if (currentSrc && currentSrc.indexOf('_pc.') > -1) {
128        var newSrc = currentSrc.replace('_pc.', '_sp.');
129        $img.attr('src', newSrc);
130      }
131    });
132
133    // アコーディオンの初期状態を設定(全て閉じる)
134    $('.hx-outer.close').next('div').hide();
135    $('.faqArea dl dt.close').next().hide();
136    $('h2.close').next('div').hide();
137    $('h3.close').next('div').hide();
138    $('#linksArea dl dd').hide();
139
140    // ニュースエリアを閉じた状態にする(openクラスを削除するだけ)
141    $('.newsBox.news1 th').removeClass('open');
142    $('.newsBox.news1 td').removeClass('open');
143
144    // アコーディオン機能
145    $('.hx-outer.close h2').off('click').on('click', function () {
146      $(this).parent().next('div').slideToggle(0);
147      $(this).parent().toggleClass('open');
148    });
149
150    $('.faqArea dl dt.close').off('click').on('click', function () {
151      $(this).next().slideToggle(0);
152      $(this).toggleClass('open');
153    });
154
155    $('h2.close').off('click').on('click', function () {
156      $(this).next('div').slideToggle(0);
157      $(this).toggleClass('open');
158    });
159
160    $('h3.close').off('click').on('click', function () {
161      $(this).next('div').slideToggle(0);
162      $(this).toggleClass('open');
163    });
164
165    $('#linksArea dl dt').off('click').on('click', function () {
166      $(this).next('dd').slideToggle(0);
167      $(this).toggleClass('open');
168    });
169
170    // ★ ニュースエリアのアコーディオン(クラスの付け外しだけ) ★
171    $('.newsBox.news1 th').off('click').on('click', function () {
172      $(this).toggleClass('open');
173      $(this).next('td').toggleClass('open');
174    });
175
176    $('#main .faq dt').off('click').on('click', function () {
177      $(this).next('dd').slideToggle();
178    });
179
180    // テーブルのレスポンシブ化
181    var $table = $('.res01');
182    if ($table.length > 0) {
183      var headColCount = $table.find('thead td').length + 1;
184      for (var i = 0; i <= headColCount; i++) {
185        var headColLabel01 = $table.find('thead th').html();
186        var headColLabel02 = $table.find('thead td:nth-child(' + i + ')').html();
187        $table.find('tr.row2 td:nth-child(' + i + ')').prepend('<p class="tit">:' + headColLabel02 + '</p>');
188        $table.find('tr.row2 td:nth-child(' + i + ') .tit').wrapInner(headColLabel01);
189      }
190    }
191
192    // leanModal用
193    if (typeof $.fn.leanModal !== 'undefined') {
194      $('a[rel*=leanModal]').leanModal({top: 200, closeButton: '.modal_close'});
195    }
196  };
197
198  // DOM Ready
199  $(function () {
200    // ===== Breakpoints処理 =====
201    if (typeof $.fn.setBreakpoints !== 'undefined') {
202      $(window).setBreakpoints({
203        distinct: true,
204        breakpoints: [1, 641]
205      });
206
207      setTimeout(function () {
208        // body要素で判定(#containerがない場合の対応)
209        var $target = $('#container').length ? $('#container') : $('body');
210        var elms = $target.attr('class') || '';
211        var timer = false;
212
213        $(window).on('load resize', function(event) {
214          if (event.type === 'resize') {
215            if (timer !== false) {
216              clearTimeout(timer);
217            }
218            timer = setTimeout(function () {
219              var currentClass = $target.attr('class') || '';
220              if (currentClass !== elms) {
221                location.reload();
222              }
223            }, 200);
224          }
225        });
226      }, 350);
227
228      if (!isIE) {
229        $(window).bind('enterBreakpoint1', function () {
230          funcSP();
231        });
232        $(window).bind('enterBreakpoint641', function () {
233          funcPC();
234        });
235      } else {
236        funcPC();
237      }
238    }
239
240    // ===== 以下、既存の処理 =====
241
242    // ページ内リンクのスムーススクロール
243    $('a[href*="#"], area[href*="#"]').on('click', function (e) {
244      // ★ target="_blank"の場合は通常動作を許可(新しいタブで開く)
245      if ($(this).attr('target') === '_blank') {
246        return true;
247      }
248
249      if ($(this).hasClass('no-scroll')) {
250        return true;
251      }
252
253      var href = $(this).attr('href');
254      var hashIndex = href.indexOf('#');
255
256      if (hashIndex === -1 || hashIndex === href.length - 1) {
257        return true;
258      }
259
260      var pathPart = href.substring(0, hashIndex);
261      var hashPart = href.substring(hashIndex);
262
263      var currentFullUrl = location.protocol + '//' + location.host + location.pathname;
264      var currentPath = location.pathname;
265
266      var isSamePage = false;
267
268      if (!pathPart) {
269        isSamePage = true;
270      } else if (pathPart === currentPath) {
271        isSamePage = true;
272      } else if (pathPart === currentFullUrl) {
273        isSamePage = true;
274      } else {
275        var linkFullUrl = $('<a>').attr('href', href)[0].href;
276        var linkPath = linkFullUrl.split('#')[0];
277        if (linkPath === currentFullUrl) {
278          isSamePage = true;
279        }
280      }
281
282      if (!isSamePage) {
283        return true;
284      }
285
286      var $target = $(hashPart);
287
288      if (!$target.length) {
289        return true;
290      }
291
292      e.preventDefault();
293
294      var isHeaderLink = $(this).closest('.l-header').length > 0;
295
296      if (isHeaderLink) {
297        $('.l-header-bottom-item-menu').hide();
298        $('.l-header-bottom-menu.js-header-menu li').removeClass('menu-active');
299      }
300
301      var $parentAccordion = $target.closest('.p-accordion-item');
302      var $childAccordion = $target.closest('.p-accordion-item-child');
303
304      if ($target.hasClass('p-faq-accordion-item')) {
305        $parentAccordion = $target;
306      }
307
308      var hasAccordion = $parentAccordion.length || $childAccordion.length;
309
310      if ($parentAccordion.length) {
311        $parentAccordion.addClass('is-opened');
312      }
313      if ($childAccordion.length) {
314        $childAccordion.addClass('is-opened-child');
315      }
316
317      var waitTime = hasAccordion ? 150 : (isHeaderLink ? 100 : 0);
318
319      setTimeout(function() {
320        var headerHeight = APP.getHeaderHeight();
321        var targetOffset = $target.offset().top;
322        var additionalOffset = 20;
323        var scrollPosition = targetOffset - headerHeight - additionalOffset;
324
325        $('html, body').stop().animate({
326          scrollTop: scrollPosition
327        }, 500, 'swing');
328      }, waitTime);
329
330      return false;
331    });
332
333    // ドロワーメニューの開閉
334    $('.js-drawer-btn').on('click', function () {
335      $(this).parent().toggleClass('is-opened');
336    });
337
338    // アコーディオンの開閉
339    $('.js-accordion-btn').on('click', function () {
340      $(this).parent().toggleClass('is-opened');
341    });
342
343    $('.js-accordion-btn-child').on('click', function (e) {
344      e.stopPropagation();
345      $(this).parent().toggleClass('is-opened-child');
346    });
347
348    // ハンバーガーメニュー
349    const ham = $('.c-hamburger');
350    const hamLine = $('.c-hamburger .deco');
351    const hamText = $('.c-hamburger .text');
352    const nav = $('.l-drawer-content');
353    const drawerLinks = $('.l-drawer-menu li a');
354
355    function toggleActive() {
356      ham.toggleClass('is-active');
357      hamLine.toggleClass('is-active');
358      hamText.toggleClass('is-active');
359      nav.toggleClass('is-active');
360      hamText.text(ham.hasClass('is-active') ? '閉じる' : 'メニュー');
361    }
362
363    ham.on('click', toggleActive);
364    drawerLinks.on('click', function () {
365      if (ham.hasClass('is-active')) {
366        toggleActive();
367      }
368      if (typeof ScrollTrigger !== 'undefined') {
369        ScrollTrigger.refresh(); // eslint-disable-line
370      }
371    });
372
373    // Swiper初期化
374    let topSwiper;
375    let recommendSwiper;
376
377    function initTopSwiper() {
378      if (document.querySelector('.js-kv-slider')) {
379        topSwiper = new Swiper('.js-kv-slider', {
380          loop: true,
381          slidesPerView: 1,
382          effect: 'fade',
383          autoplay: {
384            delay: 3000,
385            stopOnLastSlide: false,
386            disableOnInteraction: false,
387            reverseDirection: false
388          },
389          pagination: {
390            el: '.js-kv-slider-pagination',
391            type: 'bullets',
392            clickable: true
393          },
394          navigation: {
395            nextEl: '.swiper-button-next',
396            prevEl: '.swiper-button-prev'
397          }
398        });
399      }
400    }
401
402    function initrecommendSwiper() {
403      if (document.querySelector('.js-recommend-slider')) {
404        recommendSwiper = new Swiper('.js-recommend-slider', {
405          loop: true,
406          slidesPerView: 'auto',
407          watchSlidesProgress: true,
408          grabCursor: true,
409          loopAdditionalSlides: 1,
410          autoplay: {
411            delay: 2000,
412            stopOnLastSlide: false,
413            disableOnInteraction: false,
414            reverseDirection: false
415          },
416          breakpoints: {
417            300: { centeredSlides: true, spaceBetween: 16 },
418            768: { centeredSlides: true, spaceBetween: 24 },
419            1240: { spaceBetween: 24 }
420          },
421          pagination: {
422            el: '.js-recommend-slider-pagination',
423            type: 'bullets',
424            clickable: true
425          },
426          navigation: {
427            nextEl: '.swiper-button-next',
428            prevEl: '.swiper-button-prev'
429          }
430        });
431      }
432    }
433
434    initTopSwiper();
435    initrecommendSwiper();
436
437    // 一時停止・再生
438    const sliders = {
439      topSwiper,
440      recommendSwiper
441    };
442
443    document.querySelectorAll('.play-toggle').forEach(btn => {
444      const targetName = btn.dataset.target;
445      const slider = sliders[targetName];
446
447      if (slider) {
448        btn.classList.add('is-playing');
449        btn.setAttribute('aria-label', '停止');
450        slider.autoplay.start();
451
452        btn.addEventListener('click', () => {
453          if (btn.classList.contains('is-playing')) {
454            slider.autoplay.stop();
455            btn.classList.remove('is-playing');
456            btn.setAttribute('aria-label', '再生');
457          } else {
458            slider.autoplay.start();
459            btn.classList.add('is-playing');
460            btn.setAttribute('aria-label', '停止');
461          }
462        });
463      }
464    });
465
466    // 他ページからのアンカー遷移対応
467    $(window).on('load', function(){
468      if (location.hash) {
469        var targetId = location.hash;
470        var $target = $(targetId);
471
472        if ($target.length) {
473          $('html, body').scrollTop(0);
474
475          // 新コード用アコーディオン:すべての親を開く
476          $target.parents('.p-accordion-item').addClass('is-opened');
477          $target.parents('.p-accordion-item-child').addClass('is-opened-child');
478
479          // 旧コード用アコーディオン:ターゲットの親要素をすべて確認
480          $target.parents().each(function() {
481            var $this = $(this);
482
483            // このdivの直前のh2.closeまたはh3.closeを開く
484            if ($this.is('div')) {
485              var $prevHeading = $this.prev('h2.close, h3.close');
486              if ($prevHeading.length > 0) {
487                $prevHeading.addClass('open');
488                $this.show();
489              }
490            }
491
492            // .hx-outer.closeの次のdivを開く
493            if ($this.is('div')) {
494              var $prevHxOuter = $this.prev('.hx-outer.close');
495              if ($prevHxOuter.length > 0) {
496                $prevHxOuter.addClass('open');
497                $this.show();
498              }
499            }
500          });
501
502          // 教育ローンページ用のアコーディオン対応
503          var $accWrap = $target.closest('.accWrap');
504          if ($accWrap.length > 0) {
505            $accWrap.find('.accIn').show();
506            $accWrap.find('.accBtn').addClass('open');
507          }
508
509          // アコーディオンが完全に開いてから、位置を再計算してスクロール
510          setTimeout(function () {
511            var headerHeight = APP.getHeaderHeight();
512            var targetOffset = $target.offset().top;
513            var additionalOffset = 20;
514
515            $('html, body').animate({
516              scrollTop: targetOffset - headerHeight - additionalOffset
517            }, 800, 'swing', function() {
518              if (history.replaceState) {
519                history.replaceState(null, null, targetId);
520              }
521            });
522          }, 500);
523        }
524      }
525    });
526
527    // header メガメニューの開閉(クリック方式・閉じるボタン・排他制御・スクロールクローズ・動的切り替え対応)
528    $('.l-header-bottom-menu.js-header-menu > li > a').on('click', function (e) {
529      if ($(window).width() > 768) {
530        var $parentLi = $(this).parent('li');
531        var $menu = $parentLi.children('.l-header-bottom-item-menu');
532
533        // サブメニューを持たない項目(例:国の教育ローン)をクリックした場合
534        if ($menu.length === 0 || $parentLi.hasClass('menu-02') || $menu.find('.l-header-bottom-item-submenu li').length === 0) {
535          $('.l-header-bottom-item-menu').stop(true, true).hide();
536          $('.l-header-bottom-menu.js-header-menu li').removeClass('menu-active');
537          
538          // 無駄なスクロール監視を解除
539          $(window).off('scroll.menu');
540          
541          return true; // 通常のリンク遷移を実行
542        }
543
544        // サブメニューを持つ場合は、メガメニューを開くためにリンク遷移をキャンセル
545        e.preventDefault();
546
547        // クリックしたメニューが既に開いている場合は閉じる(トグル動作)
548        if ($parentLi.hasClass('menu-active')) {
549          $menu.stop(true, true).fadeOut(150, 'swing');
550          $parentLi.removeClass('menu-active');
551          
552          // 閉じたのでスクロール監視を解除
553          $(window).off('scroll.menu');
554        } else {
555          // 【最適案】すでに他のメガメニューが開いているかどうかを判定
556          var $activeMenuLi = $('.l-header-bottom-menu.js-header-menu li.menu-active');
557
558          if ($activeMenuLi.length > 0) {
559            // ▼ 別のメニューが既に開いている場合 ▼
560            // 背景のチラ見えや、文字の重なり(クロスフェード)を防ぐため、アニメーションなしで即座に切り替える
561            $('.l-header-bottom-item-menu').not($menu).stop(true, true).hide();
562            $activeMenuLi.removeClass('menu-active');
563
564            $menu.stop(true, true).show();
565            $parentLi.addClass('menu-active');
566          } else {
567            // ▼ 何も開いていない状態からの展開の場合 ▼
568            // 滑らかにフェードインさせる
569            $menu.stop(true, true).fadeIn(150, 'swing');
570            $parentLi.addClass('menu-active');
571          }
572
573          // スクロール時にメガメニューを閉じる処理
574          $(window).off('scroll.menu').on('scroll.menu', function () {
575            $('.l-header-bottom-item-menu').stop(true, true).fadeOut(150, 'swing');
576            $('.l-header-bottom-menu.js-header-menu li').removeClass('menu-active');
577            
578            // 1度閉じたら、スクロールイベントの監視を即座に解除(パフォーマンス低下防止)
579            $(window).off('scroll.menu');
580          });
581        }
582      }
583    });
584
585    // 閉じるボタンクリック時の処理
586    $('.js-header-close-btn').on('click', function (e) {
587      e.preventDefault();
588      var $menu = $(this).closest('.l-header-bottom-item-menu');
589      var $parentLi = $(this).closest('li');
590
591      // メガメニューをフェードアウトさせ、アクティブ状態を解除
592      $menu.stop(true, true).fadeOut(150, 'swing');
593      $parentLi.removeClass('menu-active');
594      
595      // メニューが閉じたのでスクロール監視を解除
596      $(window).off('scroll.menu');
597    });
598
599    // メガメニュー領域外の余白などをクリックした場合も、開いているメニューを閉じる(フェイルセーフ)
600    $(document).on('click', function(e) {
601      if ($(window).width() > 768) {
602        // クリックされた場所がヘッダーメニュー群の中でなければ閉じる
603        if (!$(e.target).closest('.l-header-bottom-menu.js-header-menu').length) {
604          // 何かメニューが開いている場合のみ処理を実行
605          if ($('.l-header-bottom-menu.js-header-menu li.menu-active').length > 0) {
606            $('.l-header-bottom-item-menu').stop(true, true).fadeOut(150, 'swing');
607            $('.l-header-bottom-menu.js-header-menu li').removeClass('menu-active');
608            
609            // メニューが閉じたのでスクロール監視を解除
610            $(window).off('scroll.menu');
611          }
612        }
613      }
614    });
615    // header メガメニューの開閉(クリック方式・閉じるボタン・排他制御・スクロールクローズ対応)ここまで
616
617    // タブ切り替え
618    $('.js-tab li').on('click', function () {
619      const selected = $(this).data('tab');
620
621      $('.js-tab li').removeClass('is-active');
622      $(this).addClass('is-active');
623
624      $('.js-tab-content').removeClass('is-active');
625      $('.js-tab-content[data-tab="' + selected + '"]').addClass('is-active');
626
627      // タブの状態をURLハッシュに保存
628      if (history.replaceState) {
629        history.replaceState(null, null, '#tab-' + selected);
630      } else {
631        location.hash = 'tab-' + selected;
632      }
633    });
634
635    // ページロード時およびブラウザバック時にタブの状態を復元
636    function restoreTabState() {
637      var hash = location.hash;
638
639      if (hash && hash.indexOf('#tab-') === 0) {
640        var tabName = hash.replace('#tab-', '');
641        var $targetTab = $('.js-tab li[data-tab="' + tabName + '"]');
642        var $targetContent = $('.js-tab-content[data-tab="' + tabName + '"]');
643
644        if ($targetTab.length > 0 && $targetContent.length > 0) {
645          $('.js-tab li').removeClass('is-active');
646          $('.js-tab-content').removeClass('is-active');
647
648          $targetTab.addClass('is-active');
649          $targetContent.addClass('is-active');
650        }
651      }
652    }
653
654    // ページロード時にタブの状態を復元
655    if ($('.js-tab').length > 0) {
656      restoreTabState();
657    }
658
659    // ブラウザの戻る/進むボタン対応
660    $(window).on('hashchange', function() {
661      if (location.hash && location.hash.indexOf('#tab-') === 0) {
662        restoreTabState();
663      }
664    });
665
666    // matchHeight
667    $(window).on('load', function () {
668      $('.p-page-rate-business-box .box h3').matchHeight();
669      $('.p-page-saftynet-saftynet-related-box .box h3').matchHeight();
670      $('.p-page-saftynet-saftynet-other-box .box h3').matchHeight();
671      $('.p-column-box .box h3').matchHeight();
672      $('.p-page-service-heijitsu_soudan-contact-box .box h3').matchHeight();
673      $('.p-column-box.col-2 .box h4').matchHeight();
674      $('.p-page-finance-direct-content-item h3').matchHeight();
675      $('.p-page-finance-direct-content-item .body').matchHeight();
676      $('.p-page-finance-saftynet-saftynet-content-box h3').matchHeight();
677      $('.p-page-service-apply-support .p-column-box .box .content').matchHeight();
678      $('.p-page-service-econtract-kn-content .p-column-box .box .content').matchHeight();
679      $('.p-page-voice .p-column-box .box .content').matchHeight();
680      $('.p-page-finance-search-c-content ul li').matchHeight();
681    });
682
683    // パンくずリストの不要な記号を削除
684    if ($('#topic-path').length > 0) {
685      $('#topic-path li').each(function() {
686        var html = $(this).html();
687
688        if (!html) {
689          return;
690        }
691
692        // 様々なパターンの記号・スペースを削除
693        html = html.replace(/&nbsp;&gt;/gi, '');    // &nbsp;&gt;
694        html = html.replace(/&nbsp;>/gi, '');        // &nbsp;>
695        html = html.replace(/&gt;/gi, '');           // &gt;
696        html = html.replace(/&nbsp;/gi, '');         // &nbsp;
697        html = html.replace(/\u00A0>/g, '');         // non-breaking space + >
698        html = html.replace(/\u00A0/g, '');          // non-breaking space
699        html = html.replace(/\s*>\s*$/g, '');        // 末尾の > と前後のスペース
700
701        $(this).html(html.trim());
702      });
703    }
704
705  }); // DOM Ready終了
706
707})(window, jQuery);

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.