/** * ブラウザの操作を取得 * @type {string} */ var NAVIGATION_TYPE = (function() { switch (performance.navigation.type) { case performance.navigation.TYPE_NAVIGATE: // console.log('通常のアクセス'); return 'navigate'; case performance.navigation.TYPE_RELOAD: // console.log('更新によるアクセス'); return 'reload'; case performance.navigation.TYPE_BACK_FORWARD: // console.log('戻る・進むによるアクセス'); return 'back_forward'; default: return ''; } })(); /** * サイドカラムあり/なしの判別 * @param $ * @param context */ function checkForSideColumn($, context){ var mainColNum = $('.region.region-content .l-content', context).children().length; if (mainColNum) { $('main').addClass('page-' + mainColNum + '-column'); } } /** * ページ内リンクのとび先をヘッダ固定分修正 * @param $(jQuery) */ function adjustLinkTargetForFixedHeader($){ var headerHeight = $('header').outerHeight();//固定している要素の高さ取得 $('a[href^="#"]').click(function(){ var href= $(this).attr("href"); var target = $(href === "#" || href === "" ? 'html' : href); var position = target.offset().top - headerHeight; $("html, body").stop().animate({scrollTop:position}, 500); return false; }); } /** * 「求人情報」一覧ページ途中の、「注目企業の求人」ブロック * @param $ */ function addTextToFeaturedJobBlock($){ $('.view.view-job-list #slick-block-content-image-link-image-link-default-61-1') .next('.field--name-field-more-link').empty() .prepend('
他にもサイトに掲載されていない注目企業の求人を多数保有しています。
お気軽にお問い合わせください。
'); } /** * 求人詳細の表示調整 job-headerが空なら削除調整 (前回見た求人) * @param $ */ function adjustJobDetailDisplay($){ $('#block-views-block-recently-visited-job-block-1 .job-header, #block-views-block-recently-visited-job-block-1-2 .job-header').filter(function() { return $(this).find('.label').length === 0; }).remove(); } /** * 「画像」キャプションが無い場合も
が出ている個所があるので、出ないように。 * @param $ */ function fixImageWithoutCaption($){ $('figure > figcaption').each(function() { if (!$(this).text()) { $(this).remove(); } }); } /** * Webform プレビュー(確認画面)調整 * @param once */ function adjustWebformPreview($){ once('webform-preview', document.querySelectorAll('.form.webform-submission-form #edit-preview')).forEach(function (target) { $(target).wrapInner('
'); }); once('webform-preview-content', document.querySelectorAll('.form.webform-submission-form #edit-preview .webform-element')).forEach(function (target) { var label = $(target).children('label'); $(this).wrapInner('
') .prepend(label.remove()); }); } /** * IE で Slick ブロックの高さが揃わないのを修正 * @param $ */ function fixedSlickBlockHeightForIE($){ var slick_block_ids = [ 'slick-views-recommend-block-1-1',// 求人詳細「あなたにおすすめの求人」ブロック 'slick-views-directory-new-arrival-job-embed-1-2',// カテゴリトップ「新着求人」ブロック 'slick-views-recently-visited-job-block-1-3',// 検索一覧の「前回見た求人」ブロック 'slick-views-recently-visited-job-block-1-4'// カテゴリトップの「前回見た求人」ブロック ]; $.each(slick_block_ids, function() { if ($('#' + this).children().length > 1) { // slickboxのDOM取得 var slickBox = document.getElementById(this); // slickboxの高さ取得 var slickBoxHeight = slickBox.clientHeight; var slickContent = slickBox['children'][0]['children'][0]['children'][0]['childNodes']; for (var iii = 0; iii < slickContent.length; iii++) { slickContent[iii].style.height = slickBoxHeight + "px"; } } }); } /** * グローバルメニューのスマホ動作 * @param $ */ function globalMenu($){ if($(window).width()<=927){//927px以下の処理 //header の a を無効 var $head = $('header .menu-item--expanded > a'); $head.off('click.menu_slide').on('click.menu_slide', function () { $(this).next().stop(true, false).slideToggle(); $(this).toggleClass('active'); return false; }); if (NAVIGATION_TYPE !== 'back_forward') $head.next().hide(); //a 親メニューのリンクを追加 $('#block-dsp-main-menu ul.menu-child').each(function() { if (!$(this).children('li:first-child').hasClass('parent-link')) { $(this).prepend(''); var parent_text = $(this).prev('a').text() + 'トップ'; $(this).prev('a').clone().text(parent_text).prependTo($(this).children('li:first-child')); } }); // メインメニュー、DSPアカウントメニューのスマホ表示 if ($('#block-dsp-account ul.menu li:first-child a').hasClass('dsp-menu-keep')) { $('#block-dsp-account ul.menu li a.dsp-menu-keep').parent('li').prependTo('#block-dsp-main-menu > > ul.menu'); //a バッジをハンバーガーメニューに表示 show_badge_in_humberger_menu($); // ハンバーガーメニュー開閉時 $('#block-dsp-main-menu > label.l-nav__checkbox--open, #block-dsp-main-menu > label.l-nav__checkbox--close').click(function() { if ($('#block-dsp-main-menu > > ul.menu').is(':hidden')) { $('.bookmark-count-badge').appendTo('#block-dsp-main-menu > > ul.menu a.dsp-menu-keep'); } else { $('.bookmark-count-badge').appendTo('#block-dsp-main-menu .l-nav__checkbox--open');// メインナビゲーションが閉じているときはハンバーガーメニューに表示 } }); } } else {//928px以上の処理 //「header の a を無効」を無効に $('header .menu-item--expanded > a').off('click.menu_slide'); // メインメニュー、DSPアカウントメニューのスマホ表示 if ($('#block-dsp-main-menu > > ul.menu li:first-child a').hasClass('dsp-menu-keep')) { badge_dsp_main_menu_default($); $('#block-dsp-main-menu ul.menu li a.dsp-menu-keep').parent('li').prependTo('#block-dsp-account ul.menu'); } } if($(window).width()<=768){//768px以下の処理 //footer のスマホ用の動作 var $foot = $('.menu-item span'); $foot.off('click.footer_slide').on('click.footer_slide', function(){ var frame = setInterval(function () { $(window).trigger('scroll'); }, 4); $(this).next().stop(true, false).slideToggle(function () { clearInterval(frame); }); $(this).toggleClass("active"); }); if (NAVIGATION_TYPE !== 'back_forward') $foot.next().hide(); $('#block-directory-interest .menu-item span').off('click.footer_slide').next().show(); } else {//769px以上の処理 //「footer のスマホ用の動作」を無効に $('.menu-item span').off('click.footer_slide').next().show(); } } /** * a バッジをハンバーガーメニューに表示 * @param $ */ function show_badge_in_humberger_menu($) { if ($('#block-dsp-main-menu > > ul.menu').is(':hidden')) { $('.bookmark-count-badge').appendTo('#block-dsp-main-menu .l-nav__checkbox--open');// メインナビゲーションが閉じているときはハンバーガーメニューに表示 } else { $('.bookmark-count-badge').insertAfter('#block-dsp-main-menu > > ul.menu a.dsp-menu-keep'); } } /** * a メインナビゲーションのバッジを所定の位置に戻す * @param $ */ function badge_dsp_main_menu_default($) { if ($('#block-dsp-main-menu .l-nav__checkbox--open').children('.bookmark-count-badge').length) { $('.bookmark-count-badge').insertAfter('#block-dsp-main-menu > > ul.menu a.dsp-menu-keep'); } } /** * パラグラフのアコーディオン動作 * @param $ */ function actionAccordionForParagraph($){ $(".path-node .paragraph--type-accordion h3").on("click", function() { $(this).next().stop(true, false).slideToggle(); $(this).toggleClass("open"); }).next().removeClass("open"); } /** * リンクボタン 強調ボタン(大) * @param $ */ function addEmphasisClassForParagraph($){ $('.paragraph--type-link-button .strong_big .button-wrapper').wrap('
'); $('.paragraph--type-link-button .strong_big .button-wrapper > a').wrapInner(''); } /** * パラグラフのHTMLを調整 * @param $ */ function adjustParagraphHtml($){ //求人詳細 子の求人が気になったら 無料登録 $('.page-node-type-job .paragraph--type-text .strong_big .button-wrapper > a').wrapInner(''); //求人詳細 子の求人が気になったら ログイン $('.page-node-type-job .paragraph--type-text .strong .button-wrapper > a').wrapInner(''); } /** * スマホ時「選択してください」を消す * @param $(jQuery) * @since 2022-12-18 */ function replaceEditFieldJobPlaceTarget($) { var $target = $('#edit-field-job-type-category-target-id-deco .selected, #edit-field-job-place-target-id-deco .selected'); if (!$target.length) return; $target.each(function() { var text = $(this).html().replace(/選択してください/, ''); if ($(window).width() < 769) { $(this).html(text); } else { $(this).html(text + '選択してください'); } }); } /** * トップページ CVボタンコントロール * @param $(jQuery) * @since 2022-12-19 */ function ctrlBlockSPBottomCV($) { var $target = $('#block-sp-bottom-cv .c-bottom-cv-button'); if (!$('.path-frontpage').length || !$target.length) return; $(window).on('scroll', function() { var position = 540; var isActive = $(window).scrollTop() >= position; $target.toggleClass('is-active-home', isActive); }); } /** * ページトップ * @param $ */ function pageTop($){ var $window = $(window), $document = $(document), $footer = $('footer'), $topBtn = $('#page-top'), footBottomMargin = 0, footBottomFixedMargin = 0, isJobSearch = (/^\/job\/?$/.test(document.location.pathname)), visiblePosition = $window.width() > 769 ? 100 : 540, topBtnShowFlag = ($window.scrollTop() > 100); function topBtnClickFunc () { $topBtn.one('click', function () { $('body,html').stop().animate({ // animateが重なっていたのでstopを追加 2022-12-19 scrollTop: 0, }, 500, topBtnClickFunc); }); } function topBtnFloatingFunc () { var scrollHeight = $document.height(); //ドキュメントの高さ var scrollPosition = $window.height() + $window.scrollTop(); //現在地 var footHeight = $footer.innerHeight(); //footerの高さ(=止めたい位置) if (scrollHeight - scrollPosition <= footHeight) { //ドキュメントの高さと現在地の差がfooterの高さ以下になったら $topBtn.css({ position: 'absolute', //pisitionをabsolute(親:wrapperからの絶対値)に変更 bottom: footHeight + footBottomMargin, //下からfooterの高さ + 10px上げた位置に配置 }); } else { //それ以外の場合は $topBtn.css({ position: 'fixed', //固定表示 bottom: footBottomFixedMargin, }); } } $(document).ready( function () { topBtnClickFunc(); //TOPへ戻るボタン連打対策 $topBtn.hide(); }); $window.on({ 'load resize': function () { topBtnShowFlag = ($window.scrollTop() > visiblePosition); $topBtn.toggle(topBtnShowFlag); if ($window.width() >= 769) { //769px以上の処理 footBottomMargin = footBottomFixedMargin = 10; } else { //769px未満の処理 if($('body.hidden_sp_bottom_cv')) { footBottomMargin = footBottomFixedMargin = 9; if (isJobSearch) footBottomFixedMargin += 46; //「検索条件を変更する」の高さを含める }else{ footBottomMargin = footBottomFixedMargin = 9 + 71; if (isJobSearch) footBottomFixedMargin += 46 - 71; //「検索条件を変更する」の高さを含める } } topBtnFloatingFunc(); }, 'scroll': function () { //TOPへ戻るボタンのチラつき対策 if ($window.scrollTop() > visiblePosition) { if (!topBtnShowFlag) { $topBtn.fadeIn(function () { topBtnShowFlag = true; }); } } else { if (topBtnShowFlag) { $topBtn.fadeOut(function () { topBtnShowFlag = false; }); } } topBtnFloatingFunc(); }, }); } function visibleSPCVButton($){ if($('body.hidden_sp_bottom_cv').length > 0){ $('.c-bottom-cv-button').hide(); } } (function($, Drupal, once) { Drupal.behaviors.dsp = { attach: function(context, settings) { // ここにJavaScriptを追加 // サイドカラムあり/なしの判別 checkForSideColumn($, context); // ページ内リンクのとび先をヘッダ固定分修正 adjustLinkTargetForFixedHeader($); // 「求人情報」一覧ページ途中の、「注目企業の求人」ブロック addTextToFeaturedJobBlock($); // 求人詳細の表示調整 adjustJobDetailDisplay($); // 「画像」キャプションが無い場合も
が出ている個所があるので、出ないように。 fixImageWithoutCaption($); // Webform プレビュー調整 adjustWebformPreview($); } } //TOPへ戻るボタン pageTop($); $(document).ready( function () { // IE で Slick ブロックの高さが揃わないのを修正 fixedSlickBlockHeightForIE($); // a パラグラフのアコーディオン actionAccordionForParagraph($); // リンクボタン 強調ボタン(大) addEmphasisClassForParagraph($); // パラグラフのHTMLを調整 adjustParagraphHtml($); // 下部固定CVボタンの出し分け visibleSPCVButton($); }); $(window).on('load resize', function() { // グローバルメニュー globalMenu($) }); // スマホ こだわり条件、サマリークローズ $(window).on('load',function (){ if($(window).width() < 769){ $('#block-job-front-block #edit-container-container-4').removeAttr('open'); replaceEditFieldJobPlaceTarget($); } }) $(window).on('resize', function (){ replaceEditFieldJobPlaceTarget($); }) // トップページ CVボタンコントロール ctrlBlockSPBottomCV($) })(jQuery, Drupal);