CINXE.COM
지역뉴스 홈
<!DOCTYPE html> <html lang="ko" > <head> <!-- for global var --> <script type="text/javascript"> var application = {"root_url":"https://news.kbs.co.kr","vod_cloud_front_url_block_international":"http://news-restrict.gscdn.kbs.co.kr","imagePath":"","resourcesPath":"/resources","root_domain":"news.kbs.co.kr","news_map_client_id":"udun63q80x","vod_api_url":"https://static.api.kbs.co.kr/play/1.2/sign","vodDefaultImage":"/resource/image/common/noimg_633_355.png","cdn_api_url_root":"https://static.api.kbs.co.kr","img_path_m_big":"https://img.kbs.co.kr/kbs/620/news.kbs.co.kr","cms_root_domain":"newscms.kbs.co.kr","vod_bucket":"newsvod.s3.kbs.co.kr","news_mobile_map_client_id":"vogmbm9h4v","jebo_root_url":"jebo.kbs.co.kr","defaultImage":"/resource/image/common/noimg_633_355.png","contextPath":"","rootDomain":"news.kbs.co.kr","img_path_m_sm":"https://img.kbs.co.kr/kbs/44/news.kbs.co.kr","img_path_m_thum":"https://img.kbs.co.kr/kbs/160/news.kbs.co.kr","resource_root_url":"//news.kbs.co.kr","vod_cloud_front_url":"http://news.play.kbs.co.kr","cms_url":"https://newscms.kbs.co.kr","image_bucket":"news-static-prod-kbs","rootUrlPrefix":"https://news.kbs.co.kr","stat_server_url":"stat.kbs.co.kr","api_server_url":"http://localhost/api"}; var user = { loginOn: false }; var noHeader = "false"; var noFlashNews = "false"; var noFooter = "false"; var searchCode = ""; var IMGPATH_MOBILE_THUMB = "https://img.kbs.co.kr/kbs/160/news.kbs.co.kr"; var IMGPATH_MOBILE_BIG = "https://img.kbs.co.kr/kbs/620/news.kbs.co.kr"; var IMGPATH_MOBILE_REPORTER = "https://img.kbs.co.kr/kbs/44/news.kbs.co.kr"; var IMGPATH_MOBILE_RECO = "https://img.kbs.co.kr/kbs/160"; //var MEMBER_ID = ''; </script> <meta charset="UTF-8"/> <meta name="viewport" content="width=device-width, initial-scale=1.0"/> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" /> <meta name="apple-mobile-web-app-capable" content="yes" /> <meta name="apple-mobile-web-app-status-bar-style" content="black" /> <link rel="shortcut icon" href="/resource/image/common/v1/favicon/favicon.ico" /> <link rel="shortcut icon" href="/resource/image/common/v1/favicon/favicon.png" /> <link rel="apple-touch-icon" href="/resource/image/common/v1/favorite/favorite.png" /> <!-- Google Tag Manager --> <script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); })(window,document,'script','dataLayer','GTM-M7J7R5');</script> <!-- End Google Tag Manager --> <!-- 안드로이드 홈화면추가시 상단 주소창 제거 --> <meta name="mobile-web-app-capable" content="yes"> <!-- ios홈화면추가시 상단 주소창 제거 --> <meta name="apple-mobile-web-app-capable" content="yes"> <!-- additional head area --> <meta name="title" content="지역뉴스 홈" /> <meta name="url" content="/news/pc/local/local.do/" /> <meta name="description" content="지역뉴스 홈" /> <meta name="keywords" content="KBS, KBS 뉴스, KBS뉴스, 뉴스, KBS NEWS" /> <!-- 페이스북 / 카카오 스토리 --> <meta id="facebook_title" property="og:title" content="지역뉴스 홈" /> <meta property="og:site_name" content="KBS 뉴스" /> <meta property="og:type" content="article" /> <meta id="facebook_url" property="og:url" content="/news/pc/local/local.do/"/> <meta id="facebook_img" property="og:image" content="//news.kbs.co.kr/resource/image/common/img_meta.png"/> <meta id="facebook_img_secure" property="og:image:secure_url" content="//news.kbs.co.kr/resource/image/common/img_meta.png"/> <meta id="facebook_desc" property="og:description" content="지역뉴스 홈"/> <!-- 트위터 --> <meta name="twitter:card" content="summary_large_image"> <meta name="twitter:site" content="KBS 뉴스"> <meta name="twitter:title" content="지역뉴스 홈"> <meta name="twitter:creator" content="KBS 뉴스"> <meta name="twitter:image" content="//news.kbs.co.kr/resource/image/common/img_meta.png"> <meta name="twitter:description" content="지역뉴스 홈"> <!-- Google --> <meta itemprop="name" content="지역뉴스 홈"> <meta itemprop="description" content="지역뉴스 홈"> <meta itemprop="image" content="//news.kbs.co.kr/resource/image/common/img_meta.png"> <link rel="manifest" href="/resource/manifest/manifest.json"> <link rel="canonical" href="https://news.kbs.co.kr/news/pc/local.html?lscd=71" /> <!-- #ifb alternateUrl <link rel="alternate" href="" /> /ifb --> <title>지역뉴스 홈</title> <!-- script --> <script type="text/javascript" src="/resource/module/jquery-3.7.1/jquery-3.7.1.min.js"></script> <script type="text/javascript" src="/resource/module/dayjs-1.11.10/dayjs.min.js"></script> <script type="text/javascript" src="/resource/module/dayjs-1.11.10/plugin/duration.js"></script> <script type="text/javascript" src="/resource/module/dayjs-1.11.10/locale/ko.js"></script> <script> dayjs.extend(window.dayjs_plugin_duration); dayjs.locale(dayjsLocaleKo, null, true); </script> <script type="text/javascript" src="/resource/module/swiper-11.0.5/swiper-bundle.min.js"></script> <script type="text/javascript" src="/resource/module/jquery-ui-1.13.2/jquery-ui.min.js"></script> <link rel="stylesheet" href="/resource/module/jquery-ui-1.13.2/jquery-ui.css"> <script defer src="https://developers.kakao.com/sdk/js/kakao.min.js"></script> <!-- css --> <link rel="stylesheet" type="text/css" href="/resource/css/pc/common/swiper-bundle.min.css"> <link rel="stylesheet" type="text/css" href="/resource/css/pc/style.css"> <script src="/js/common/common.js?v=20250220050119"></script> <script> /******************************************************* * 공통함수 영역 [s] *******************************************************/ // 브라우저에서 Notification 지원 여부 확인 var isNotificationSupported = 'Notification' in window; if (isNotificationSupported) { // Notification 권한 요청 try { Notification.requestPermission().then(function (result) { if (result === 'granted') { console.log('[Notification] 허용: ', result); } else { console.log('[Notification] 차단: ', result); } }); } catch (error) { console.log(error); } } else { // console.log("Not Supported"); } // 사용자가 푸시 알림을 클릭했을 때의 이벤트 리스너 function onClickNotification(event) { console.log('[푸시알림 클릭]'); event.currentTarget.close(); var url = event.currentTarget.data.url; if (!url) { url = "https://news.kbs.co.kr/news/breaking.do"; } window.open(url); } function sendNotification(obj) { // 푸시 알림 정보 조회 var title = "알림"; if (obj.type == "B") { title = "속보" } var icon = icon || '/resource/image/common/kbsnews_logo.png'; // 아이콘 이미지 var badge = badge || '/resource/image/common/kbsnews_logo.png'; // 배지 이미지 var options = { body: obj.flashEditContents, icon: icon, badge: badge, data: { url: obj.url } }; // 푸시 알림 출력 if (window.Notification && Notification.permission === "granted") { Notification.requestPermission().then(function(result) { if (result === "granted") { navigator.serviceWorker.ready.then(function(registration) { registration.showNotification(title, options); registration.addEventListener("click", function(event) { onClickNotification(event); }); }); } }); } } function checkNotification(data) { var flashNewsNotifiedCodeList = {}; try { flashNewsNotifiedCodeList = JSON.parse(localStorage.getItem("flashNewsNotifiedCodeList")); } catch (e) { } if (flashNewsNotifiedCodeList == null) { flashNewsNotifiedCodeList = {}; } var now = dayjs(); if (data == null) { data = []; } for (var a = 0; a < data.length; a++) { var obj = data[a]; if (flashNewsNotifiedCodeList[obj.flashEditCode]) continue; var startDate = dayjs(obj.regDate + "+0900", 'YYYY-MM-DD HH:mm:ssZZ'); var endDate = dayjs(obj.endDate + "+0900", 'YYYY-MM-DD HH:mm:ssZZ'); if (now.isBefore(endDate) && now.isAfter(startDate)) { flashNewsNotifiedCodeList[obj.flashEditCode] = true; sendNotification(obj); } } try { localStorage.setItem("flashNewsNotifiedCodeList", JSON.stringify(flashNewsNotifiedCodeList)); } catch (e) { } } var headerUi = {}; var headerStickyTriggerPoint window.addEventListener("load", function () { headerUi.worldSelect(); headerUi.navMenuClick(); headerUi.navFixed(); headerUi.searchClick(); headerUi.dimClick(); headerUi.disasterClick(); headerUi.recommendSearch(); }); // 속보 롤링 클릭 event headerUi.breakingNewsClick = function breakingNewsClick(swiper) { headerStickyTriggerPoint = $('.header-nav-wrapper').offset().top; var $btn = document.querySelector(".breaking-news.rolling .arrow-btn"); var $history = document.querySelector(".breaking-news-history-wrapper"); if ($btn) { $btn.addEventListener("click", function () { $btn.classList.toggle("on"); $history.classList.toggle("on"); headerStickyTriggerPoint = $('.header-nav-wrapper').offset().top; footerUi.setAsidePos(); }); } }; // 수직 롤링 함수 headerUi.verticalRollingFn = function verticalRollingFn(swiper) { var retrunValue = new Swiper(swiper, { direction: "vertical", loop: true, loopAdditionalSlides: 1, autoplay: { delay: 2500, disableOnInteraction: false } }); return retrunValue; }; // 날씨 롤링 event headerUi.weatherRolling = function weatherRolling() { headerUi.verticalRollingFn(".weather"); }; // 재난 알림 롤링 event var disasterSwiper; headerUi.disasterRolling = function disasterRolling() { disasterSwiper = headerUi.verticalRollingFn(".disaster-rolling-swiper"); }; // 속보 롤링 event headerUi.breakingNewsRolling = function breakingNewsRolling() { var returnSwiper = headerUi.verticalRollingFn(".breaking-news-swiper"); return returnSwiper; }; // 재난 알림 펼침 클릭 event headerUi.disasterClick = function disasterClick() { $(".disaster-rolling .arrow-btn").off("click").on("click", function () { if ($(this).hasClass("on")) { headerUi.disasterRolling(); $(".disaster-rolling").removeClass("open"); $(this).removeClass("on"); $(".rolling-message").each(function (index, el) { $(el).removeClass("open"); }); $(".rolling-message .caution").each(function (index, el) { $(el).removeClass("off"); }); } else { disasterSwiper.destroy(); $(".disaster-rolling-list").removeAttr("style"); $(".disaster-rolling").addClass("open"); $(this).addClass("on"); $(".rolling-message").each(function (index, el) { $(el).addClass("open"); }); $(".rolling-message .caution").each(function (index, el) { $(el).addClass("off"); }); if ($(".disaster-rolling .swiper-wrapper").height() > 414) { $(".disaster-rolling-swiper").addClass("overflow-y"); } } footerUi.setAsidePos(); }); }; // KBS WORLD 클릭 event headerUi.worldSelect = function worldSelect() { var $menu = document.querySelector("#header .foreign-site-links"); var $btn = document.querySelector("#header .kbs-world-select-btn"); var $dim = document.querySelector(".dim"); if ($btn) { $btn.addEventListener("click", function () { $btn.classList.toggle("on"); $menu.classList.toggle("on"); $dim.classList.toggle("transparent"); $dim.classList.toggle("on"); }); } }; // 햄버거 버튼 클릭 event headerUi.hamburgerClick = function hamburgerClick() { var $btn = document.querySelector(".hamburger-btn"); var $navMenu = document.querySelector(".header-nav"); var $fullMenu = document.querySelector(".full-menu-wrapper"); var $navLinks = document.querySelectorAll(".nav-link"); var $commonMenues = document.querySelectorAll(".common-menu"); var $dim = document.querySelector(".dim"); var $body = document.querySelector("body"); if ($btn) { $btn.addEventListener("click", function () { if ($btn.classList.contains("on")) { $btn.classList.remove("on"); $navMenu.classList.remove("on"); $fullMenu.classList.remove("on"); $dim.classList.remove("on"); $body.classList.remove("hidden"); $navLinks.forEach(function ($navLink) { $navLink.classList.remove("on"); }); $commonMenues.forEach(function ($commonMenu) { $commonMenu.classList.remove("on"); }); } else if (!$btn.classList.contains("on")) { $btn.classList.add("on"); $navMenu.classList.add("on"); $fullMenu.classList.add("on"); $dim.classList.add("on"); $body.classList.add("hidden"); $body.classList.add("on"); } }); } }; // 네비게이션 메뉴 클릭 event headerUi.navMenuClick = function navMenuClick() { var menuNames = ["분야별", "TV 뉴스", "심층취재", "시사프로그램", "지역뉴스"]; var $navLinks = document.querySelectorAll(".nav-link"); var $fullMenu = document.querySelector(".full-menu-wrapper"); var $dim = document.querySelector(".dim"); var $fullMenuNames = document.querySelectorAll("#header .full-menu-wrapper h3"); var $hamburgerBtn = document.querySelector(".hamburger-btn"); var $onNavLink = void 0; var $body = document.querySelector("body"); $navLinks.forEach(function ($navLink) { if ($navLink) { $navLink.addEventListener("click", function () { var menuName = $navLink.innerText; if (menuNames.includes(menuName)) { if ($onNavLink) { $onNavLink.classList.remove("on"); } if (!$hamburgerBtn.classList.contains("on")) { $hamburgerBtn.classList.add("on"); } $navLink.classList.add("on"); $onNavLink = $navLink; $fullMenuNames.forEach(function ($fullMenuName) { var fullMenuName = $fullMenuName.innerText; var $commonMenu = $fullMenuName.parentElement.parentElement; $commonMenu.classList.remove("on"); if (fullMenuName === menuName) { $commonMenu.classList.add("on"); } }); if (!$fullMenu.classList.contains("on")) { $fullMenu.classList.add("on"); $dim.classList.add("on"); $body.classList.add("hidden"); } } }); } }); }; // 서치 버튼 클릭 event headerUi.searchClick = function searchClick() { var $btn = document.querySelector(".hamburger-search-btns .search-btn"); var $closeBtn = document.querySelector(".search .close-btn"); var $hamburgerBtn = document.querySelector(".hamburger-btn"); var $fullMenu = document.querySelector(".full-menu-wrapper"); var $navLinks = document.querySelectorAll(".nav-link"); var $commonMenues = document.querySelectorAll(".full-menu .common-menu"); var $searchMenu = document.querySelector(".search-most-view"); var $dim = document.querySelector(".dim"); var $body = document.querySelector("body"); if ($btn) { $btn.addEventListener("click", function () { if ($fullMenu.classList.contains("on")) { $fullMenu.classList.remove("on"); } if ($hamburgerBtn.classList.contains("on")) { $hamburgerBtn.classList.remove("on"); } $navLinks.forEach(function ($navLink) { $navLink.classList.remove("on"); }); $commonMenues.forEach(function ($commonMenu) { $commonMenu.classList.remove("on"); }); $searchMenu.classList.add("on"); $dim.classList.add("on"); $body.classList.add("hidden"); $body.classList.add("on"); }); } if ($closeBtn) { $closeBtn.addEventListener("click", function () { $searchMenu.classList.remove("on"); $dim.classList.remove("on"); $body.classList.remove("hidden"); }); } }; /** * 스크롤 시 헤더 고정 포인트값 계산 */ headerUi.setHeaderStickyTriggerPoint = function setHeaderStickyTriggerPoint() { const $headerTopMenu = $(".header-nav-wrapper"); headerStickyTriggerPoint = $headerTopMenu.offset().top; } // 스크롤시 네비게이션 메뉴 고정 event headerUi.navFixed = function navFixed() { var menuBar = $(".header-nav-wrapper"); var navLogo = $(".nav-menu .nav-logo"); var menuBarHeight = menuBar.outerHeight(); var $contents = $('#contents'); this.setHeaderStickyTriggerPoint(); $(window).on("scroll", function () { if ($(window).scrollTop() > headerStickyTriggerPoint) { menuBar.addClass("fixed"); navLogo.addClass("on"); $contents.css('padding-top', `${menuBarHeight}px`); } else { menuBar.removeClass("fixed"); navLogo.removeClass("on"); $contents.removeAttr('style'); } }); }; // 딤 화면 클릭 event headerUi.dimClick = function dimClick() { var $dim = document.querySelector(".dim"); var $searchMenu = document.querySelector(".search-most-view"); var $nav = document.querySelector(".header-nav"); var $hamburgerBtn = document.querySelector(".hamburger-btn"); var $fullMenu = document.querySelector(".full-menu-wrapper"); var $navLinks = document.querySelectorAll(".nav-link"); var $commonMenues = document.querySelectorAll(".common-menu"); var $body = document.querySelector("body"); if ($dim) { $dim.addEventListener("click", function () { $dim.classList.remove("on"); $searchMenu.classList.remove("on"); $nav.classList.remove("on"); $hamburgerBtn.classList.remove("on"); $fullMenu.classList.remove("on"); $body.classList.remove("hidden"); $navLinks.forEach(function ($navLink) { $navLink.classList.remove("on"); }); $commonMenues.forEach(function ($commonMenu) { $commonMenu.classList.remove("on"); }); }); } }; // 추천 검색어 headerUi.recommendSearch = function recommendSearch() { var $input = document.querySelector(".header-nav-wrapper .search-box .search-box-input"); var $recommend = document.querySelector(".recommend-search"); var $wrapper = document.querySelector(".search-most-view"); var $dim = document.querySelector(".dim"); if ($input) { $input.addEventListener("focus", function () { $recommend.classList.add("on"); $input.classList.add("focus"); }); } if ($wrapper) { $wrapper.addEventListener("click", function (e) { var target = e.target; if (target !== $input) { $recommend.classList.remove("on"); $input.classList.remove("focus"); } }); } if ($dim) { $dim.addEventListener("click", function () { $recommend.classList.remove("on"); $input.classList.remove("focus"); }); } }; var commonUi = {}; window.addEventListener("load", function () { commonUi.setAllmenuRef(); setTimeout(function () { commonUi.tabClick(); }, 1000); commonUi.localQuickMenu(); commonUi.playlistPopup(); commonUi.programIntroPopup(); commonUi.centerSlide(); // commonUi.yearSlide(); commonUi.onairSchedule(); commonUi.commonToggle(); commonUi.issueTimeLine(); // commonUi.recommendSearch(); commonUi.detailSearchClick(); // commonUi.commonBtnClick(); // commonUi.allCheckClick(); }); // Allmenu ref 세팅: #header를 기준으로 마크업 하고 #footer 에서는 JS로 바꿔준다. // #header : ref=pSiteMap // #footer : ref=pFooter commonUi.setAllmenuRef = function() { $("#footer .full-menu a").each( (idx, el) => { const href = $(el).attr("href").replaceAll(/ref=pSiteMap/gi, "ref=pFooter"); $(el).attr("href", href); } ); } // 탭 클릭 commonUi.tabClick = function tabClick() { $(".tab-btns .tab-btn").off("click").on("click", function () { var id = $(this).closest(".tab-btns").data("tab-contents"); var index = $(this).closest(".tab-btns-list").index(); $(this).closest(".tab-btns-list").siblings().removeClass("on"); $(this).closest(".tab-btns-list").addClass("on"); $("#" + id).find(".tab-contents-list").hide(); $("#" + id).find(".tab-contents-list").eq(index).show(); if (index == 0) { $(".onair-popup-button").show(); } else { $(".onair-popup-button").hide(); } }); }; // 전체선택 체크박스 클릭 commonUi.allSelectClick = function () { var $allSelect = document.querySelector(".all-select input"); $allSelect.checked = false; var $allBoxContents = document.querySelectorAll(".box-contents .box-content .common-checkbox input"); var $checkboxes = []; $allBoxContents.forEach(function(input) { if (getComputedStyle(input.closest('.box-content')).display !== "none") { $checkboxes.push(input); } }); $checkboxes.forEach(function ($checkbox) { $checkbox.checked = false; }); if ($allSelect) { $allSelect.addEventListener("click", function () { if ($allSelect.checked) { $checkboxes.forEach(function ($checkbox) { $checkbox.checked = true; }); } else { $checkboxes.forEach(function ($checkbox) { $checkbox.checked = false; }); } }); } }; // 지역 뉴스 바로가기 클릭 commonUi.localQuickMenu = function () { var $button = document.querySelector(".local-news-quick-menu-button"); var $quickMenu = document.querySelector(".local-news-quick-menu .quick-menu"); var $closeButton = document.querySelector(".local-news-quick-menu .close-button"); if ($button) { var handleClickOnce = function(event) { if (!$button.contains(event.target)) { $button.classList.remove("on"); $quickMenu.classList.remove("on"); document.removeEventListener("click", handleClickOnce); } } $button.addEventListener("click", function () { if ($button.classList.contains("on")) { $button.classList.remove("on"); $quickMenu.classList.remove("on"); document.removeEventListener("click", handleClickOnce); } else { $button.classList.add("on"); $quickMenu.classList.add("on"); document.addEventListener("click", handleClickOnce); } }); $closeButton.addEventListener("click", function () { $button.classList.remove("on"); $quickMenu.classList.remove("on"); document.removeEventListener("click", handleClickOnce); }); } }; // 선택재생 버튼 클릭 commonUi.selectPlayClick = function () { var $wrapper = document.querySelector(".play-buttons-wrapper"); var $selectPlayBtn = document.querySelector(".play-buttons-wrapper .select-play-button"); var $selectCancelPlayBtn = document.querySelector(".play-buttons-wrapper .select-cancel-button"); var $allSelect = document.querySelector(".all-select.common-checkbox"); var $checkboxes = document.querySelectorAll(".thumbnail .common-checkbox"); if ($selectCancelPlayBtn) { $wrapper.classList.remove("on"); $allSelect.classList.remove("on"); $checkboxes.forEach(function ($checkbox) { $checkbox.classList.remove("on"); }); } if ($selectPlayBtn) { $selectPlayBtn.addEventListener("click", function () { $wrapper.classList.add("on"); $allSelect.classList.add("on"); $checkboxes.forEach(function ($checkbox) { $checkbox.classList.add("on"); var $parentAnchor = $checkbox.closest("a"); if ($parentAnchor) { $parentAnchor.setAttribute("onclick", "javascript:checkBox(this)"); $parentAnchor.setAttribute("blockhref", $parentAnchor.getAttribute("href")); $parentAnchor.removeAttribute("href"); } }); }); } if ($selectCancelPlayBtn) { $selectCancelPlayBtn.addEventListener("click", function () { $wrapper.classList.remove("on"); $allSelect.classList.remove("on"); $checkboxes.forEach(function ($checkbox) { $checkbox.classList.remove("on"); var $parentAnchor = $checkbox.closest("a"); if ($parentAnchor) { $parentAnchor.removeAttribute("onclick"); $parentAnchor.setAttribute("href", $parentAnchor.getAttribute("blockhref")); $parentAnchor.removeAttribute("blockhref"); } }); }); } }; function checkBox(_this) { var checkBox = $(_this).find('.common-checkbox input'); if (checkBox) { if (checkBox.is(':checked')) { checkBox.prop("checked", false); } else { checkBox.prop("checked", true); } } } // 플레이리스트 팝업 클릭 commonUi.playlistPopup = function () { var $headerNav = document.querySelector("#header .header-nav-wrapper"); var $dim = document.querySelector(".dim"); var $popup = document.querySelector(".playlist-popup"); var $body = document.querySelector("body"); if ($dim) { $dim.addEventListener("click", function () { $headerNav.classList.remove("index-change"); $dim.classList.remove("on"); if ($popup) { $popup.classList.remove("on"); } $body.classList.remove("hidden"); }); } }; // 프로그램 소개 팝업 관련 이벤트 commonUi.programIntroPopup = function () { var $button = document.querySelector(".common-title-banner .program-introduction-button"); var $closeBtn = document.querySelector(".program-introduction-popup .close-button"); var $closeBtn02 = document.querySelector(".program-introduction-popup .program-introduction-wrapper .close-button"); var $popup = document.querySelector(".program-introduction-popup"); var $headerNav = document.querySelector("#header .header-nav-wrapper"); var $dim = document.querySelector(".dim"); var $body = document.querySelector("body"); if ($button) { $button.addEventListener("click", function () { $headerNav.classList.add("index-change"); $dim.classList.add("on"); if ($popup) { $popup.classList.add("on"); } $body.classList.add("hidden"); }); } if ($dim) { $dim.addEventListener("click", function () { $headerNav.classList.remove("index-change"); $dim.classList.remove("on"); if ($popup) { $popup.classList.remove("on"); } $body.classList.remove("hidden"); }); } if ($closeBtn) { $closeBtn.addEventListener("click", function () { $headerNav.classList.remove("index-change"); $dim.classList.remove("on"); if ($popup) { $popup.classList.remove("on"); } $body.classList.remove("hidden"); }); } if ($closeBtn02) { $closeBtn02.addEventListener("click", function () { $headerNav.classList.remove("index-change"); $dim.classList.remove("on"); if ($popup) { $popup.classList.remove("on"); } $body.classList.remove("hidden"); }); } }; // 슬라이드 함수 commonUi.slideFn = function slideFn(view, slide, pagination, nextBtn, prevBtn) { var retrunValue = new Swiper(slide, { slidesPerView: view, spaceBetween: 0, slidesPerGroup: view, loopFillGroupWithBlank: true, loop: true, pagination: { el: pagination, type: "fraction" }, navigation: { nextEl: nextBtn, prevEl: prevBtn } }); return retrunValue; }; // 내비게이션 없는 슬라이드 함수 commonUi.noNaviSlideFn = function noNaviSlideFn(view, slide, pagination) { var retrunValue = new Swiper(slide, { slidesPerView: view, spaceBetween: 0, slidesPerGroup: view, loopFillGroupWithBlank: true, loop: true, pagination: { el: pagination, type: "fraction" } }); var $pagination = document.querySelector("".concat(pagination)); $pagination.parentElement.classList.add("off"); return retrunValue; }; // 탭스와이퍼 슬라이드 commonUi.tabSwiper = function () { if ($(".tab-swiper-pagination")) { if ($(".tab-swiper-pagination .swiper-slide").length > 1) { var tabSwiper = commonUi.slideFn(1, ".tab-swiper-pagination .swiper", ".tab-swiper-pagination .pagination", ".tab-swiper-pagination .next", ".tab-swiper-pagination .previous"); } else if ($(".news-9-slide .swiper-slide").length <= 4) { var tabSwiper = commonUi.noNaviSlideFn(1, ".tab-swiper-pagination .swiper", ".tab-swiper-pagination .pagination"); } } }; // 탭스와이퍼 슬라이드 클릭 commonUi.tabSwiperClick = function () { var $tabMenues = document.querySelectorAll(".tab-swiper-pagination .tab-menu"); var $contentsWrapper = document.querySelector(".tab-swiper-contents-wrapper"); if ($tabMenues) { $tabMenues.forEach(function ($tabMenu) { $tabMenu.addEventListener("click", function () { if (!$tabMenu.classList.contains("on")) { var $onTabMenu = document.querySelector(".tab-swiper-pagination .tab-menu.on"); $onTabMenu.classList.remove("on"); $onTabMenu = $tabMenu; $onTabMenu.classList.add("on"); var $parentLi = $onTabMenu.parentElement; var $grandUl = $parentLi.parentElement; var btnOrder = Array.from($parentLi.children).indexOf($onTabMenu); var parentOrder = Array.from($grandUl.children).indexOf($parentLi) - 1; var $onContent = document.querySelector(".tab-swiper-content.on"); $onContent.classList.remove("on"); $onContent = $contentsWrapper.children[parentOrder].children[btnOrder]; $onContent.classList.add("on"); } }); }); } }; commonUi.centerSlide = function () { if ($(".sub-page-center-slide").length) { $(document).ready(function () { $(".sub-page-center-slide").owlCarousel({ center: true, items: 3, loop: true, nav: true, autoWidth: true, margin: 24 }); }); } }; commonUi.yearSlide = function () { if ($(".sub-page-year-slide").length) { $(document).ready(function () { $(".sub-page-year-slide").owlCarousel({ items: 11, loop: false, nav: true, autoWidth: true, draggable: false }); }); } }; commonUi.onairSchedule = function () { $(".title-schedule-box .schedule").click(function () { $(".player-schedule").toggleClass("on"); $(".title-schedule-box .arrow-icon").toggleClass("on"); }); $(".onair-player-window .close").click(function () { window.close(); }); }; commonUi.commonToggle = function () { var $toggleBtn = document.querySelector(".common-toggle-button"); if ($toggleBtn) { $toggleBtn.addEventListener("click", function () { $toggleBtn.classList.toggle("on"); }); } }; commonUi.issueTimeLine = function () { var $ul = document.querySelector(".field-timeline"); var $lists = document.querySelectorAll(".field-timeline .timeline-list"); var $lastTimeBadge = document.querySelector(".time-badge-wrapper.last"); var pos = 0; var height; if ($ul) { height = $ul.getBoundingClientRect().height; } if ($lists && $lastTimeBadge) { $lists.forEach(function ($list) { $list.style.top = "".concat(pos, "px"); pos -= 80; }); $lastTimeBadge.style.top = "".concat(pos + 80, "px"); $ul.style.height = "".concat(height + pos + 80, "px"); } }; // 검색결과 추천검색어 // commonUi.recommendSearch = function () { // var $body = document.querySelector("body"); // var $input = document.querySelector(".main-search-area .search-box-input"); // var $recommendSearch = document.querySelector(".main-search-area .recommend-search"); // if ($input) { // $input.addEventListener("input", function () { // $recommendSearch.classList.add("on"); // }); // $body.addEventListener("click", function (e) { // if (e.target !== $input) { // $recommendSearch.classList.remove("on"); // } // }); // } // }; // 검색결과 상세검색 클릭 commonUi.detailSearchClick = function () { var $mainSearch = document.querySelector(".main-search-area"); var $detailSearch = document.querySelector(".detail-search-area"); var $button = document.querySelector(".detail-search-button"); if ($button) { $button.addEventListener("click", function () { $mainSearch.classList.toggle("on"); $detailSearch.classList.toggle("on"); }); } }; // 검색결과 상세검색 공통버튼 클릭 commonUi.commonBtnClick = function () { var $btns = document.querySelectorAll(".detail-search-area .common-button"); $btns.forEach(function ($btn) { if ($btn) { $btn.addEventListener("click", function () { if (!$btn.classList.contains("on")) { var $wrapper = $btn.parentElement; var $onBtn = $wrapper.querySelector(".common-button.on"); $onBtn.classList.remove("on"); $btn.classList.add("on"); } }); } }); }; // 검색결과 체크박스 전체 클릭 commonUi.allCheckClick = function () { var $checkboxsInputs = document.querySelectorAll(".detail-search-area .classification .custom-blue-checkbox input"); var $allCheckInput = document.querySelector(".detail-search-area .classification input"); if ($allCheckInput) { $allCheckInput.addEventListener("click", function () { if ($allCheckInput.checked === true) { $checkboxsInputs.forEach(function ($input) { $input.checked = true; }); } else if ($allCheckInput.checked === false) { $checkboxsInputs.forEach(function ($input) { $input.checked = false; }); } }); $checkboxsInputs.forEach(function ($input) { if ($input !== $allCheckInput) { $input.addEventListener("click", function () { if ($allCheckInput.checked === true) { $allCheckInput.checked = false; } }); } }); } }; var subUi = {}; var isBreakingNewsLoaded = false; var isLiveNewsLoaded = true; var isHeaderDisasterLoaded = false; var isHeaderNoticeLoaded = false; var footerUi = {}; var isPageLoaded = false; window.addEventListener("load", function () { footerUi.selectClick(); footerUi.asideShareClick(); footerUi.asideTxtClick(); footerUi.asideDarkClick(); footerUi.asideCommentClick(); footerUi.asideLikeClick(); footerUi.asideOpenMenuClick(); footerUi.topBtnClick(); footerUi.setAsideToggle(); var asideInterval3 = setInterval(function () { if (isBreakingNewsLoaded && isLiveNewsLoaded && isHeaderDisasterLoaded && isHeaderNoticeLoaded) { window.scrollBy(0, 5); window.scrollBy(0, -5); footerUi.asideFixed(); footerUi.setAsidePos(); clearInterval(asideInterval3); } }, 10) isPageLoaded = true; }); window.addEventListener("resize", function () { if (isPageLoaded) { footerUi.setAsidePos(); } }); // 셀렉트 메뉴 클릭 event footerUi.selectClick = function selectClick() { const $footerSelectBtn = $('.footer-select-btn'); const $commonSelectLink = $('.common-select-links'); $footerSelectBtn.on('click', function() { if($(this).siblings($commonSelectLink).hasClass('on')) { $(this).removeClass('on'); $(this).siblings($commonSelectLink).removeClass('on'); } else { $($footerSelectBtn).removeClass('on'); $($commonSelectLink).removeClass('on'); $(this).addClass('on'); $(this).siblings($commonSelectLink).addClass('on'); } }); $(document).on('click', function(event) { if(($commonSelectLink).hasClass('on')) { removeOnClass(event); } }); function removeOnClass() { if (!$(event.target).closest($footerSelectBtn).length) { $($footerSelectBtn).removeClass('on'); $($commonSelectLink).removeClass('on'); } } }; // 사이드 메뉴 공유 메뉴 클릭 event footerUi.asideShareClick = function asideShareClick() { var $btn = document.querySelector(".aside-btns-list .share-btn"); var $closeBtn = document.querySelector(".share-menu .close-btn"); var $dim = document.querySelector(".dim"); var $menu = document.querySelector(".share-menu"); var $nav = document.querySelector(".header-nav-wrapper"); var $body = document.querySelector("body"); if ($btn) { $btn.addEventListener("click", function () { $dim.classList.toggle("on"); $menu.classList.toggle("on"); $nav.classList.toggle("index-change"); $body.classList.toggle("hidden"); }); } if ($closeBtn) { $closeBtn.addEventListener("click", function () { $dim.classList.remove("on"); $menu.classList.remove("on"); $nav.classList.remove("index-change"); $body.classList.remove("hidden"); }); } if ($dim) { $dim.addEventListener("click", function () { $dim.classList.remove("on"); $menu.classList.remove("on"); $nav.classList.remove("index-change"); $body.classList.remove("hidden"); }); } }; // 사이드 메뉴 텍스트 메뉴 클릭 event footerUi.asideTxtClick = function asideTxtClick() { var $btn = document.querySelector(".aside-btns-list .txt-btn"); var $txtIcon = document.querySelector(".aside-btns-list .txt-btn .txt-icon"); var $btnTxt = document.querySelector(".aside-btns-list .txt-btn .common-btn-txt"); var $menu = document.querySelector(".aside-btns-list .txt-menu"); // 텍스트 메뉴 펼침 if ($btn) { $btn.addEventListener("click", function () { $btn.classList.toggle("on"); $menu.classList.toggle("on"); }); } // 텍스트 메뉴 클릭 $(".txt-menu-btn.large").off("click").on("click", function () { if (!$txtIcon.classList.contains("large")) { $("body").find("*").not(".player-app, .player-app *, #header, #header *, #footer, #footer *, .aisde, .aside *, .header-live-wrapper, .header-live-wrapper *").each(function () { $(this).css("font-size", ""); var size = Number($(this).css("font-size").replace("px", "")) + 1; if (size > 1) { $(this).css("font-size", size + "px"); } }); $txtIcon.className = "txt-icon large"; $btnTxt.innerText = "확대"; } localStorage.setItem("text-size", "large"); $menu.classList.remove("on"); }); $(".txt-menu-btn.normal").off("click").on("click", function () { if (!$txtIcon.classList.contains("normal")) { $("body").find("*").not(".player-app, .player-app *, #header, #header *, #footer, #footer *, .aisde, .aside *, .header-live-wrapper, .header-live-wrapper *").each(function () { $(this).css("font-size", ""); }); $txtIcon.className = "txt-icon normal"; $btnTxt.innerText = "기본"; } localStorage.setItem("text-size", "normal"); $menu.classList.remove("on"); }); $(".txt-menu-btn.small").off("click").on("click", function () { if (!$txtIcon.classList.contains("small")) { $("body").find("*").not(".player-app, .player-app *, #header, #header *, #footer, #footer *, .aisde, .aside *, .header-live-wrapper, .header-live-wrapper *").each(function () { $(this).css("font-size", ""); var size = Number($(this).css("font-size").replace("px", "")) - 1; $(this).css("font-size", size + "px"); }); $txtIcon.className = "txt-icon small"; $btnTxt.innerText = "축소"; } localStorage.setItem("text-size", "small"); $menu.classList.remove("on"); }); }; // 사이드 메뉴 다크 클릭 event footerUi.asideDarkClick = function asideDarkClick() { var $btn = document.querySelector(".dark-btn"); var $btnTxt = document.querySelector(".dark-btn .common-btn-txt"); var $body = document.querySelector("body"); if ($btn) { $btn.addEventListener("click", function () { var isDark = document.documentElement.getAttribute("data-dark") === "true"; if (isDark) { document.documentElement.dataset.dark = "false"; $btnTxt.innerHTML = "\uB2E4\uD06C<br />\uBAA8\uB4DC"; if (navigator.cookieEnabled) { localStorage.setItem("dark-mode", "false"); } } else { document.documentElement.dataset.dark = 'true'; $btnTxt.innerHTML = "\uB77C\uC774\uD2B8<br />\uBAA8\uB4DC"; if (navigator.cookieEnabled) { localStorage.setItem("dark-mode", "true"); } } }); } }; // 사이드 메뉴 댓글 클릭 footerUi.asideCommentClick = function asideCommentClick() { var $btn = document.querySelector(".aside-btns-list .comment-btn"); if ($btn) { var $commentArea = document.querySelector(".comment-area"); $btn.addEventListener("click", function () { $commentArea.scrollIntoView({ behavior: "smooth" }); }); } }; // 사이드 메뉴 좋아요 클릭 footerUi.asideLikeClick = function asideLikeClick() { var $btn = document.querySelector(".aside-btns-list .like-btn"); if ($btn) { var $openMenu = document.querySelector(".like-menu.open-menu"); $btn.addEventListener("click", function () { $btn.classList.toggle("on"); $openMenu.classList.toggle("on"); }); } }; // 사이드 오픈 메뉴 클릭 footerUi.asideOpenMenuClick = function asideOpenMenuClick() { var $btns = document.querySelectorAll(".open-menu-btn"); $btns.forEach(function ($btn) { var $openMenu = $btn.parentElement.parentElement; var $asideBtn = $openMenu.previousElementSibling; if ($btn) { $btn.addEventListener("click", function () { $openMenu.classList.remove("on"); $asideBtn.classList.remove("on"); }); } }); }; // 스크롤시 어사이드 고정 event footerUi.asideFixed = function asideFixed() { var $aside = $(".aside"); var $asideToggle = $(".aside-toggle-button"); $(window).on("scroll", function () { if ($(window).scrollTop() > headerStickyTriggerPoint) { if ($aside) $aside.addClass("fixed"); if ($asideToggle) $asideToggle.addClass("fixed"); } else { if ($aside) $aside.removeClass("fixed"); if ($asideToggle) $asideToggle.removeClass("fixed"); } }); }; // 탑버튼 클릭 footerUi.topBtnClick = function topBtnClick() { var $btn = document.querySelector("#footer .top-btn"); if ($btn) { $btn.addEventListener("click", function () { window.scrollTo({ top: 0, behavior: "smooth" }); }); } }; // 최초 어사이드 포지션 설정 footerUi.setAsidePos = function setAsidePos() { var $aside = document.querySelector("#footer .aside"); var $asideToggle = document.querySelector("#footer .aside-toggle-button"); var $contents = document.querySelector("#contents"); var $iframe = document.querySelector("#contents .iframe-area .inr"); var $headLine = document.querySelector("#contents .main-head-line"); var $headerNav = document.querySelector(".header-nav"); var $viewContentsWrapper = document.querySelector(".view-contents-wrapper"); var $reporterInformationIntroduce = document.querySelector(".reporter-information-introduce"); var $election2024 = document.querySelector("#contents .election-box"); var left = 0; if ($headerNav) { left = $headerNav.getBoundingClientRect().left; } if ($aside) { $aside.classList.remove("hide"); $aside.style.display = ""; $aside.style.left = Math.max(left - 98, 0) + "px"; } if ($asideToggle) { $asideToggle.classList.remove("show"); $asideToggle.style.display = ""; } if (window.innerWidth <= 1300) { if ($aside) { $aside.classList.add("hide"); } if ($asideToggle) { $asideToggle.classList.add("show"); if ($asideToggle.classList.contains("on")) { if ($aside) { $aside.classList.remove("hide"); } $asideToggle.style.left = 47 + "px"; } else { $asideToggle.style.left = 0; } } } if ($iframe) { var top = window.scrollY + $iframe.getBoundingClientRect().top; if ($(".header-nav-wrapper").hasClass("fixed")) { top += 50; } $aside.style.top = top + "px"; $asideToggle.style.top = top + 26 + "px"; } else if ($election2024) { // headLine top = window.scrollY + $election2024.getBoundingClientRect().top; if ($(".header-nav-wrapper").hasClass("fixed")) { top += 50; } $aside.style.top = top + "px"; $asideToggle.style.top = top + 26 + "px"; } else { if ($contents) { top = window.scrollY + $contents.getBoundingClientRect().top + 24; } if ($(".header-nav-wrapper").hasClass("fixed")) { top += 50; } if ($aside) { $aside.style.top = top + "px"; } if ($asideToggle) { $asideToggle.style.top = top + 26 + "px"; } } }; // 속보 생성시 어사이드 포지션 설정 footerUi.setAsidePosForBreakingNews = function setAsidePosForBreakingNews() { var $aside = document.querySelector("#footer .aside"); var $asideToggle = document.querySelector("#footer .aside-toggle-button"); var $contents = document.querySelector("#contents"); var $iframe = document.querySelector("#contents .iframe-area .inr"); var $headLine = document.querySelector("#contents .main-head-line"); var $headerNav = document.querySelector(".header-nav"); var $viewContentsWrapper = document.querySelector(".view-contents-wrapper"); var $reporterInformationIntroduce = document.querySelector(".reporter-information-introduce"); var left = 0; if ($headerNav) { left = $headerNav.getBoundingClientRect().left; } if ($aside) { $aside.style.left = Math.max(left - 98, 0) + "px"; } if (window.innerWidth <= 1300) { if ($asideToggle) { if ($asideToggle.classList.contains("on")) { $asideToggle.style.left = 47 + "px"; } else { $asideToggle.style.left = 0; } } } if ($iframe) { var top = window.scrollY + $iframe.getBoundingClientRect().top; if ($(".header-nav-wrapper").hasClass("fixed")) { top += 50; } if ($aside) { $aside.style.top = top + "px"; } if ($asideToggle) { $asideToggle.style.top = top + 26 + "px"; } } else if ($headLine) { if ($headLine) { top = window.scrollY + $headLine.getBoundingClientRect().top; } if ($(".header-nav-wrapper").hasClass("fixed")) { top += 50; } if ($aside) { $aside.style.top = top + "px"; } if ($asideToggle) { $asideToggle.style.top = top + 26 + "px"; } } else { if ($contents) { top = window.scrollY + $contents.getBoundingClientRect().top + 24; } if ($(".header-nav-wrapper").hasClass("fixed")) { top += 50; } if ($aside) { $aside.style.top = top + "px"; } if ($asideToggle) { $asideToggle.style.top = top + 26 + "px"; } } }; footerUi.setAsideToggle = function setAsideToggle() { var $aside = document.querySelector("#footer .aside"); var $asideToggle = document.querySelector("#footer .aside-toggle-button"); if ($asideToggle) { $asideToggle.addEventListener("click", function () { if ($aside.classList.contains("hide")) { $aside.classList.remove("hide"); $asideToggle.classList.add("on"); $asideToggle.style.left = 47 + "px"; } else { $aside.classList.add("hide"); $asideToggle.classList.remove("on"); $asideToggle.style.left = 0; } }); } }; /******************************************************* * 공통함수 영역 [e] *******************************************************/ $(function () { $('.aside .aside-comment').hide(); $('.aside .aside-like').hide(); $('.aside .aside-copy').hide(); $('.aside .aside-dark').remove(); $('.progress-bar').hide(); }); </script> <script type="text/javascript"> if (isMobile() && getParameterByName('mode') != 'pc') { var currentURL = window.location.href; var mobileURL = currentURL.replace('/pc/', '/mobile/'); location.href = mobileURL; } </script> </head> <body> <!-- Google Tag Manager (noscript) --> <noscript><iframe src="https://www.googletagmanager.com/ns.html?id=GTM-M7J7R5" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript> <!-- End Google Tag Manager (noscript) --> <!-- breaking news txt area --> <header id="header"> <div class="before-breaking-news" style="display:none"> </div> <script> var speed = 20 * 1000; // 20초 var lastSokbo; // 이전 속보 $(function () { updateLiveOnAirNews(); setUpdateNews(); }) function setUpdateNews() { setInterval(updateLiveOnAirNews, speed); } function updateLiveOnAirNews() { $.get('/sokbo/sokbo.json?d=' + dayjs().format("YYYYMMDDHHmmss"), function (ret) { setOnAirNewsFlash(ret); // 웹푸시 checkNotification(ret); }); } function setOnAirNewsFlash(liveOnAirNews) { var currentDate = getKoreaTime(); var sortData = null; var data = []; if (liveOnAirNews) { data = liveOnAirNews.slice(); } if (data && data.length) { if (Array.isArray(data)) { sortData = data.sort(function (a, b) { if (dayjs(a.regDate).isBefore(b.regDate)) { return b; } }); sortData = sortData.filter(function (sortItem) { return !dayjs(currentDate).isAfter(new Date(sortItem.endDate)) && sortItem.type === "B"; }); // 최신 속보와 이전 속보가 다를 경우 속보를 다시 띄운다. if (lastSokbo != JSON.stringify(sortData)) { lastSokbo = JSON.stringify(sortData); $('.breaking-news-wrapper').remove(); $('.rolling-breaking-news').remove(); headerUi.setHeaderStickyTriggerPoint(); // header sticky point reset if (sortData.length) { var $div; sortData.sort(function (a, b) { var aFlashEditCode = parseInt(a.flashEditCode); var bFlashEditCode = parseInt(b.flashEditCode); if (aFlashEditCode < bFlashEditCode) { return 1; } if (aFlashEditCode > bFlashEditCode) { return -1; } return 0; }); var htmlContent; if (sortData.length == 1) { htmlContent = '<div class="breaking-news-wrapper">' + '<div class="breaking-news">' + '<div class="news-title">' + '<div class="badge">속보</div>' + '<a class="title" href="" aria-label="속보 기사 링크"></a>' + '</div>' + '<a href="/news/pc/breaking/breaking.html" class="all-link" aria-label="속보 전체 페이지 링크">' + '<span class="txt">속보 및 알림 전체</span>' + '<span class="arrow"></span>' + '</a>' + '</div>' + '</div>'; // jQuery 객체로 변환 var $div = $(htmlContent); var flashEditContents = sortData[0].flashEditContents.replace('\n', ' '); $div.find('.breaking-news a.title').attr('href', sortData[0].url).text(flashEditContents); $('.before-breaking-news').after($div); } else { htmlContent = '<div class="rolling-breaking-news">' + '<div class="breaking-news-wrapper">' + '<div class="breaking-news rolling">' + '<div class="news-title">' + '<div class="badge">속보</div>' + '<div class="breaking-news-swiper swiper">' + '<ul class="swiper-wrapper">' + '<li class="swiper-slide breaking-news-list">' + '<a class="breaking-news-link" aria-label="속보 기사 링크"></a>' + '</li>' + '</ul>' + '</div>' + '</div>' + '<button type="button" class="arrow-btn" aria-label="속보 펼침 버튼"></button>' + '</div>' + '</div>' + '<div class="breaking-news-history-wrapper">' + '<div class="breaking-news-history">' + '<ul class="histories">' + '<li class="history-list">' + '<span class="time"></span>' + '<div class="txt-wrapper">' + '<span class="circle"></span>' + '<a class="txt" aria-label="속보 기사 링크"></a>' + '</div>' + '</li>' + '</ul>' + '<a href="/news/pc/breaking/breaking.html" class="all-link" aria-label="속보 기사 링크">' + '<span class="txt">속보 및 알림 전체</span>' + '<span class="arrow-btn"></span>' + '</a>' + '</div>' + '</div>' + '</div>'; // jQuery 객체로 변환 var $div = $(htmlContent); for (var i = 0; i < sortData.length; i++) { var flashEditContents = sortData[i].flashEditContents.replace('\n', ' '); var $li_slide = $div.find('.breaking-news-wrapper ul li').first().clone(); $li_slide.find('a').html(flashEditContents); if (sortData[i].url) { $li_slide.find('a').attr('href', sortData[i].url); } $div.find('.breaking-news-wrapper ul').append($li_slide); var $li = $div.find('.breaking-news-history-wrapper ul li').first().clone(); $li.find('span.time').text(dayjs(sortData[i].regDate).format("HH:mm")); $li.find('a.txt').text(flashEditContents); if (sortData[i].url) { $li.find('a').attr('href', sortData[i].url); } $div.find('.breaking-news-history-wrapper ul').append($li); } $div.find('.breaking-news-history-wrapper ul li').first().remove(); $div.find('.breaking-news-wrapper ul li').first().remove(); $('.before-breaking-news').after($div); var breakingNewsSwiper = headerUi.breakingNewsRolling(); headerUi.breakingNewsClick(breakingNewsSwiper); } } footerUi.setAsidePosForBreakingNews(); } } } isBreakingNewsLoaded = true; } </script> <style> #header .rolling-breaking-news .breaking-news-history-wrapper .breaking-news-history .histories .history-list .time, #header .rolling-breaking-news .breaking-news-history-wrapper .breaking-news-history .histories .history-list .txt { color: #fff; } </style> <!-- 헤더 탑 메뉴 --> <div class="header-top-menu-wrapper"> <div class="header-top-menu"> <div class="sns-links-menu"> <a href="https://www.kbs.co.kr" class="kbs-link sns-link" target="_blank" title="KBS 사이트" aria-label="KBS 사이트 링크">KBS</a> <a href="https://www.youtube.com/user/NewsKBS" class="youtube-link sns-link" target="_blank" title="KBS 뉴스 유튜브 페이지" aria-label="KBS 뉴스 유튜브 링크"></a> <a href="https://www.facebook.com/kbsnews" class="facebook-link sns-link" target="_blank" title="KBS 뉴스 페이스북 페이지" aria-label="KBS 뉴스 페이스북 링크"></a> <a href="https://www.instagram.com/kbsnews/" class="instagram-link sns-link" target="_blank" title="KBS 뉴스 인스타그램 페이지" aria-label="KBS 뉴스 인스타그램 링크"></a> <a href="https://www.tiktok.com/@kbsnewsofficial" class="tiktok-link sns-link" target="_blank" title="KBS 뉴스 틱톡 페이지" aria-label="KBS 뉴스 틱톡 링크"></a> <!-- <a href="/news/light/main.html?ref=pGnb" class="text-version-link sns-link" target="_blank" title="KBS 뉴스 텍스트 버전 페이지" aria-label="KBS 뉴스 텍스트 버전 링크">텍스트 버전</a>--> </div> <div class="weather-cache-area"> <img src="/resource/image/pc/weather/dark/sun.png" alt="날씨 캐시 이미지" style="height: 0; width: 0;"/> <img src="/resource/image/pc/weather/dark/cloudy-sun.png" alt="날씨 캐시 이미지" style="height: 0; width: 0;"/> <img src="/resource/image/pc/weather/dark/cloudy-sun2.png" alt="날씨 캐시 이미지" style="height: 0; width: 0;"/> <img src="/resource/image/pc/weather/dark/cloudy.png" alt="날씨 캐시 이미지" style="height: 0; width: 0;"/> <img src="/resource/image/pc/weather/dark/fog.png" alt="날씨 캐시 이미지" style="height: 0; width: 0;"/> <img src="/resource/image/pc/weather/dark/smoge.png" alt="날씨 캐시 이미지" style="height: 0; width: 0;"/> <img src="/resource/image/pc/weather/dark/cloud-lightning.png" alt="날씨 캐시 이미지" style="height: 0; width: 0;"/> <img src="/resource/image/pc/weather/dark/cloud-drizzle.png" alt="날씨 캐시 이미지" style="height: 0; width: 0;"/> <img src="/resource/image/pc/weather/dark/cloud-rain.png" alt="날씨 캐시 이미지" style="height: 0; width: 0;"/> <img src="/resource/image/pc/weather/dark/snow.png" alt="날씨 캐시 이미지" style="height: 0; width: 0;"/> </div> <div class="weather-login-menu"> <p class="today"></p> <div class="weather swiper"> <ul class="swiper-wrapper"> <li class="swiper-slide weather-info-list"> <img src="" alt="" class="weather-info-img"/> <p class="weather-info-txt"> <span class="city-name"></span> <span class="temperature"></span> <span class="weather-info"></span> </p> </li> </ul> </div> <a class="login" id="login_id" aria-label="로그인 페이지 링크">로그인</a> <a class="register" id="register_id" aria-label="회원가입 페이지 링크">회원가입</a> <a class="my-page" id="my-page-id" href="//mypage.kbs.co.kr" aria-label="마이페이지 링크">마이페이지</a> <a class="kbs-world" href="/special/english/main.do?bcd=0200">English</a> </div> </div> </div> <!-- 헤더 타이틀 메뉴 --> <div class="header-title-menu-wrapper"> <div class="header-title-menu"> <div class="disaster-portal-link" id="disaster-portal-link"> <span class="siren-icon"></span> <a href="https://d.kbs.co.kr/" class="default-txt" target="_blank" aria-label="재난포털 페이지 링크">재난포털</a> <a href="" class="disaster-message" aria-label="재난포털 페이지 링크"></a> </div> <h1 class="header-logo"> <a href="/news/pc/main/main.html?ref=pLogo" class="header-logo-link" aria-label="KBS 뉴스 메인 링크"></a> </h1> <div class="report-live-menu"> <a href="/news/pc/report/report.html?ref=pGnb" class="report-link" aria-label="제보 페이지 링크">제보</a> <a href="/news/pc/news24/news24.html?ref=pGnb" class="live-link" aria-label="ON AIR 버튼"> <span class="txt">ON AIR</span> <span class="red-dot"></span> </a> </div> </div> </div> <div class="header-nav-wrapper"> <div class="header-nav"> <nav class="nav-menu"> <div class="hamburger-search-btns"> <button type="button" class="hamburger-btn" onclick="hamburgerClick()" aria-label="전체 메뉴 펼침 버튼" ></button> <button type="button" class="search-btn" aria-label="검색 화면 열림 버튼" ></button> </div> <a href="/news/pc/main/main.html?ref=pGnb" class="nav-logo view"></a> <ul class="nav-links"> <li class="nav-list"> <a href="javascript:;" class="nav-link" aria-label="분야별"> 분야별 </a> </li> <li class="nav-list"> <a href="/news/pc/program/program.do?bcd=0001&ref=pGnb" class="nav-link" aria-label="뉴스9 페이지 링크" > 뉴스9 </a> </li> <li class="nav-list"> <a href="javascript:;" class="nav-link" aria-label="TV 뉴스"> TV 뉴스 </a> </li> <li class="nav-list"> <a href="javascript:;" class="nav-link" aria-label="심층취재"> 심층취재 </a> </li> <li class="nav-list"> <a href="/news/pc/sports/sports.html?ref=pGnb" class="nav-link" aria-label="스포츠" > 스포츠 </a> </li> <li class="nav-list"> <a href="javascript:;" class="nav-link" aria-label="시사프로그램"> 시사프로그램 </a> </li> <li class="nav-list"> <a href="javascript:;" class="nav-link" aria-label="지역뉴스"> 지역뉴스 </a> </li> <li class="nav-list"> <a href="/news/pc/breaking/breaking.html?ref=pGnb" class="nav-link" aria-label="속보">속보</a> </li> </ul> </nav> <ul class="hashtag-links"> <li class="hashtag-list"> <a href="" class="hashtag-link" aria-label="기사 페이지 링크"></a> </li> </ul> </div> <div class="full-menu-wrapper"> <div class="full-menu"> <h2 class="blind">전체메뉴</h2> <div class="common-menu field-menu"> <div class="full-menu-links-wrapper"> <h3>분야별</h3> <div class="full-menu-links-group"> <ul class="full-menu-links"> <li><a href="/news/pc/category/category.do?ref=pSiteMap">전체</a></li> <li><a href="/news/pc/category/category.do?ctcd=0003&ref=pSiteMap">정치</a></li> <li><a href="/news/pc/category/category.do?ctcd=0004&ref=pSiteMap">경제</a></li> <li><a href="/news/pc/category/category.do?ctcd=0005&ref=pSiteMap">사회</a></li> <li><a href="/news/pc/category/category.do?ctcd=0008&ref=pSiteMap">문화</a></li> <li><a href="/news/pc/category/category.do?ctcd=0007&ref=pSiteMap">IT·과학</a></li> <li><a href="/news/pc/category/category.do?ctcd=0006&ref=pSiteMap">국제</a></li> <li><a href="/news/pc/category/category.do?ctcd=0095&ref=pSiteMap">재난·기후·환경</a></li> <li><a href="/news/pc/category/category.do?ctcd=0034&ref=pSiteMap">생활·건강</a></li> <li><a href="/news/pc/sports/sports.html?ref=pSiteMap">스포츠</a></li> <li><a href="/news/pc/enter/enter.html?ref=pSiteMap">연예</a></li> <li><a href="/news/pc/menu/listWeather.do?mcd=0048&ref=pSiteMap">날씨</a></li> <li><a href="/news/pc/issue/issue.html?ref=pSiteMap">이슈</a></li> </ul> </div> </div> </div> <div class="common-menu tv-menu"> <div class="full-menu-links-wrapper"> <h3>TV 뉴스</h3> <div class="full-menu-links-group"> <h4>1TV 뉴스</h4> <ul class="full-menu-links col-2"> <li><a href="/news/pc/program/program.do?bcd=0004&ref=pSiteMap">06:00 뉴스광장 1부</a></li> <li><a href="/news/pc/program/program.do?bcd=0010&ref=pSiteMap">17:00 뉴스 5</a></li> <li><a href="/news/pc/program/program.do?bcd=0003&ref=pSiteMap">07:00 뉴스광장 2부</a></li> <li><a href="/news/pc/program/program.do?bcd=0011&ref=pSiteMap">19:00 뉴스 7</a></li> <li><a href="/news/pc/program/program.do?bcd=0008&ref=pSiteMap">09:30 930뉴스</a></li> <li><a href="/news/pc/program/program.do?bcd=0001&ref=pSiteMap">21:00 뉴스 9</a></li> <li><a href="/news/pc/program/program.do?bcd=0009&ref=pSiteMap">12:00 뉴스 12</a></li> <li><a href="/news/pc/program/program.do?bcd=0012&ref=pSiteMap">22:50 뉴스라인 W</a></li> <li><a href="/news/pc/program/program.do?bcd=0137&ref=pSiteMap">14:00 뉴스 2</a></li> </ul> </div> <div class="full-menu-links-group col-2"> <h4>2TV 뉴스</h4> <ul class="full-menu-links"> <li><a href="/news/pc/program/program.do?bcd=0016&ref=pSiteMap">10:10 아침뉴스타임</a></li> <li><a href="/news/pc/program/program.do?bcd=0049&ref=pSiteMap">15:00 뉴스타임</a></li> <li><a href="/news/pc/program/program.do?bcd=0197&ref=pSiteMap">15:15 월드24</a></li> <li><a href="/news/pc/program/program.do?bcd=0199&ref=pSiteMap">18:00 경제콘서트</a></li> </ul> </div> <div class="full-menu-links-group col-2"> <h4>1TV 경인</h4> <ul class="full-menu-links"> <li><a href="/news/pc/program/program.do?bcd=0060&ref=pSiteMap">뉴스광장(경인)</a></li> <li><a href="/news/pc/program/program.do?bcd=0059&ref=pSiteMap">930뉴스(경인)</a></li> <li><a href="/news/pc/program/program.do?bcd=0051&ref=pSiteMap">뉴스7(경인)</a></li> <li><a href="/news/pc/program/program.do?bcd=0052&ref=pSiteMap">뉴스9(경인)</a></li> </ul> </div> <div class="full-menu-links-group"> <h4><a href="/news/pc/program/program.do?bcd=0042&ref=pSiteMap">뉴스특보</a></h4> </div> </div> </div> <div class="common-menu premiumk-menu"> <div class="full-menu-links-wrapper"> <h3>심층취재</h3> <ul class="full-menu-links col-2"> <li><a href="/news/pc/menu/menu.do?mcd=1127&ref=pSiteMap">심층K</a></li> <li><a href="/news/pc/menu/menu.do?mcd=0713&ref=pSiteMap">단독</a></li> <li><a href="/news/pc/menu/tamsaKList.do?mcd=1016&ref=pSiteMap">탐사K</a></li> <li><a href="/news/pc/menu/menu.do?mcd=1075&ref=pSiteMap">제대로 보겠습니다</a></li> <li><a href="/news/pc/menu/menu.do?mcd=0990&ref=pSiteMap">영상K</a></li> <li><a href="/news/pc/menu/menu.do?mcd=0938&ref=pSiteMap">크랩</a></li> <li><a href="/news/pc/menu/menu.do?mcd=1048&ref=pSiteMap">글로벌K</a></li> <li><a href="/news/pc/menu/menu.do?mcd=1032&ref=pSiteMap">팩트체크K</a></li> <li><a href="/news/pc/menu/menu.do?mcd=1039&ref=pSiteMap">스포츠K</a></li> </ul> <ul class="full-menu-links col-2"> <li><a href="/news/pc/menu/menu.do?mcd=0795&ref=pSiteMap">취재후</a></li> <li><a href="/news/pc/program/program.do?bcd=0023&ref=pSiteMap">News Today</a></li> <li class="w100"><a href="/news/pc/menu/menu.do?mcd=1126&ref=pSiteMap">주말엔</a></li> <li class="w100"><a href="/news/pc/menu/menu.do?mcd=1162&ref=pSiteMap">뒷北뉴스</a></li> <li class="w100"><a href="/special/climatesays/2023/main.html?&ref=pSiteMap">기후는 말한다</a></li> <li class="w100"><a href="/news/pc/menu/menu.do?mcd=1044&ref=pSiteMap">여심야심</a></li> </ul> </div> </div> <div class="common-menu current-affairs-menu"> <div class="full-menu-links-wrapper"> <h3>시사프로그램</h3> <div class="full-menu-links-group"> <h4>시사프로그램</h4> <ul class="full-menu-links"> <li><a href="/news/pc/sisa/sisaChang.do?ref=pSiteMap">시사기획 창</a></li> <li><a href="/news/pc/sisa/sisa.do?bcd=0029&ref=pSiteMap">일요진단 라이브</a></li> <li><a href="/news/pc/sisa/sisa.do?bcd=0198&ref=pSiteMap">더 보다</a></li> <li><a href="/news/pc/sisa/sisa.do?bcd=0031&ref=pSiteMap">남북의 창</a></li> <li><a href="/news/pc/sisa/sisa.do?bcd=0072&ref=pSiteMap">특파원 보고 세계는 지금</a></li> <li><a href="/news/pc/sisa/sisa.do?bcd=0071&ref=pSiteMap">재난방송센터</a></li> <li><a href="/news/pc/sisa/sisa.do?bcd=0073&ref=pSiteMap">사사건건</a></li> <li><a href="/news/pc/sisa/sisa.do?bcd=0061&ref=pSiteMap">인사이드 경인</a></li> </ul> </div> <div class="full-menu-links-group"> <h4>라디오</h4> <ul class="full-menu-links"> <li><a href="/news/pc/radio/radio.do?mcd=1139&ref=pSiteMap">전격시사</a></li> <li><a href="/news/pc/radio/radio.do?mcd=1125&ref=pSiteMap">성공예감</a></li> <li><a href="/news/pc/radio/radio.do?mcd=1138&ref=pSiteMap">뉴스레터K</a></li> </ul> </div> </div> </div> <div class="common-menu region-menu"> <div class="full-menu-links-wrapper"> <h3>지역뉴스</h3> <div class="full-menu-links-group"> <ul class="full-menu-links col-2"> <li><a href="/news/pc/local/local.do?lscd=10&ref=pSiteMap">부산</a></li> <li><a href="/news/pc/local/local.do?lscd=43&ref=pSiteMap">순천</a></li> <li><a href="/news/pc/local/local.do?lscd=11&ref=pSiteMap">울산</a></li> <li><a href="/news/pc/local/local.do?lscd=50&ref=pSiteMap">전주</a></li> <li><a href="/news/pc/local/local.do?lscd=20&ref=pSiteMap">창원</a></li> <li><a href="/news/pc/local/local.do?lscd=60&ref=pSiteMap">대전</a></li> <li><a href="/news/pc/local/local.do?lscd=21&ref=pSiteMap">진주</a></li> <li><a href="/news/pc/local/local.do?lscd=70&ref=pSiteMap">청주</a></li> <li><a href="/news/pc/local/local.do?lscd=30&ref=pSiteMap">대구</a></li> <li><a href="/news/pc/local/local.do?lscd=71&ref=pSiteMap">충주</a></li> <li><a href="/news/pc/local/local.do?lscd=31&ref=pSiteMap">안동</a></li> <li><a href="/news/pc/local/local.do?lscd=80&ref=pSiteMap">춘천</a></li> <li><a href="/news/pc/local/local.do?lscd=32&ref=pSiteMap">포항</a></li> <li><a href="/news/pc/local/local.do?lscd=81&ref=pSiteMap">강릉</a></li> <li><a href="/news/pc/local/local.do?lscd=40&ref=pSiteMap">광주</a></li> <li><a href="/news/pc/local/local.do?lscd=82&ref=pSiteMap">원주</a></li> <li><a href="/news/pc/local/local.do?lscd=41&ref=pSiteMap">목포</a></li> <li><a href="/news/pc/local/local.do?lscd=90&ref=pSiteMap">제주</a></li> </ul> </div> </div> </div> <div class="common-menu shortcut-menu"> <div class="full-menu-links-wrapper"> <h3>바로가기</h3> <div class="full-menu-links-group"> <ul class="full-menu-links"> <li><a href="//mypage.kbs.co.kr">좋아요 클립</a></li> <li><a href="/news/pc/report/report.html?ref=pSiteMap">제보</a></li> <li><a href="/news/pc/breaking/breaking.html?ref=pSiteMap">속보</a></li> <li><a href="https://d.kbs.co.kr/" target="_blank">재난포털</a></li> <li><a href="/news/pc/news24/news24.html?ref=pSiteMap">ON AIR</a></li> <li><a href="/news/pc/newsArchive/newsArchive.html?ref=pSiteMap">뉴스 아카이브</a></li> </ul> </div> <div class="full-menu-links-group"> <h3><a href="/news/pc/notice/notice.html?ref=pSiteMap">공지·정정</a></h3> </div> </div> </div> </div> </div> <div class="search-most-view"> <div class="search-wrapper"> <div class="search"> <div class="search-box-wrapper"> <p class="search-title">어떤 기사를 찾으시나요?</p> <div class="search-box"> <input type="text" placeholder="원하는 검색어를 입력해주세요" class="search-box-input"/> <button type="button" class="search-btn" aria-label="검색 조회 버튼"></button> <button type="button" class="cancel-btn" style="display: none" aria-label="검색어 초기화 버튼"></button> <ul class="recommend-search"></ul> </div> <script type="text/javascript"> var originalSearchWord = ''; var originalKeyboardOnIndex = -1; $(function () { // 검색어 자동완성 handleSearchKeyword(); }); // 검색 창 function handleSearchKeyword() { var $searchInput = $(".header-nav-wrapper .search-box-wrapper input[type='text']"); var $keywordClear = $(".header-nav-wrapper .search-box-wrapper button.cancel-btn"); $searchInput.on('input ', function (event) { var word = $(this).val().trim(); if (word.length >= 1) { $keywordClear.show(); getKeyword(word); } if (word.length == 0) { $('.recommend-search').removeClass('on'); $keywordClear.hide(); } }); $searchInput.on("keydown", function (event) { var key = event.key || event.keyCode; var KEYCODE = { ENTER: 13, ESC: 27, ARROW_UP: 38, ARROW_DOWN: 40 }; var KEY_RETURN_TIME = 80; if (key == KEYCODE.ARROW_UP || key == "ArrowUp") { event.preventDefault(); setTimeout(function () { var $liList = $('.recommend-search li'); var currentIndex = -1; $liList.each(function (index) { if ($(this).hasClass('on')) { currentIndex = index; return false; // break out of the .each loop } }); if (currentIndex == -1) { $('.recommend-search').removeClass('on'); } else if (currentIndex == 0) { $('input.search-box-input').val(originalSearchWord); $liList.removeClass('on'); $('.recommend-search').removeClass('on'); } else { $liList.removeClass('on'); $('input.search-box-input').val($liList.eq(currentIndex - 1).find('button').val()); $liList.eq(currentIndex - 1).addClass('on'); originalKeyboardOnIndex = currentIndex - 1; } }, KEY_RETURN_TIME); } else if (key == KEYCODE.ARROW_DOWN || key == "ArrowDown") { setTimeout(function () { var $liList = $('.recommend-search li'); var currentIndex = -1; $liList.each(function (index) { if ($(this).hasClass('on')) { currentIndex = index; return false; // break out of the .each loop } }); $liList.removeClass('on'); $('.recommend-search').addClass('on'); if (currentIndex == -1) { $('input.search-box-input').val($liList.eq(0).find('button').val()); $liList.eq(0).addClass('on'); originalKeyboardOnIndex = 0; } else if (currentIndex == $liList.length - 1) { $('input.search-box-input').val($liList.eq(0).find('button').val()); $liList.eq(0).addClass('on'); originalKeyboardOnIndex = 0; } else { $('input.search-box-input').val($liList.eq(currentIndex + 1).find('button').val()); $liList.eq(currentIndex + 1).addClass('on'); originalKeyboardOnIndex = currentIndex + 1; } }, KEY_RETURN_TIME); } else if (key == KEYCODE.ENTER || key == "Enter") { setTimeout(function () { $('.recommend-search').removeClass('on'); moveSearchPage(); }, KEY_RETURN_TIME); } else if (key == KEYCODE.ESC || key == "Escape") { setTimeout(function () { $('.recommend-search').removeClass('on'); }, KEY_RETURN_TIME); } }); // 검색버튼 클릭 $(".search-most-view .search-btn").on("click", function () { moveSearchPage(); }); // 클리어 버튼 클릭 $keywordClear.on("click", function () { $(this).hide(); $('.recommend-search').removeClass('on'); $searchInput.val(""); }); } function getKeyword(word) { originalSearchWord = word; $.get('https://reco.kbs.co.kr/v2/search/autocomplete?target=autocomplete_news&keyword=' + word + '&page=1&page_size=10').done(function (res) { $(".recommend-search li").remove(); if (res.data.length > 0) { displayKeyword(res.data); } }); } function displayKeyword(data) { for (var i = 0; i < data.length; i++) { // <li> 태그 생성 var $li = document.createElement('li'); $li.className = "recommend-search-list"; // <button> 태그 생성 var $button = document.createElement('button'); $button.setAttribute('type', 'button'); $button.setAttribute('value', data[i].keyword_raw); $button.setAttribute('aria-label', "추천어 버튼"); $button.className = 'recommend-word'; var keyword = data[i].keyword; $button.innerHTML = keyword; $li.appendChild($button); $('ul.recommend-search').append($li); } originalKeyboardOnIndex = -1; $('ul.recommend-search').addClass('on'); $('ul.recommend-search li').off('mousedown').on('mousedown', function (e) { var keyword = $(this).find('button').val(); location.href = "/news/pc/search/search.do?query=" + encodeURI(keyword); }) $('ul.recommend-search li').off('mouseenter').on('mouseenter', function (e) { $('ul.recommend-search li').removeClass('on'); $(this).addClass('on'); }) $('ul.recommend-search li').on('mouseleave', function (e) { if ($('ul.recommend-search li:hover').length == 0) { // 모든 <li>에서 마우스가 떠났는지 확인 $('ul.recommend-search li').removeClass('on'); if (originalKeyboardOnIndex != -1) { $('ul.recommend-search li').eq(originalKeyboardOnIndex).addClass('on'); } } }); } function moveSearchPage() { var keyword = $(".search-box-wrapper input[type='text']").val().trim(); if (keyword) { location.href = "/news/pc/search/search.do?query=" + encodeURIComponent(keyword); } else { alert("검색어를 입력해주세요."); } } </script> <style> .recommend-search li { cursor: pointer; } .recommend-search li.on { background-color: #dddddd !important; } .recommend-search li button { width: 100%; text-align: left; } #header .header-nav-wrapper .search-most-view .search-wrapper .search .search-box-wrapper .search-box .recommend-search .recommend-search-list .recommend-word strong { font-weight: 700; } </style> <div class="recommend-keyword"> <div class="title-wrapper"> <p class="title">추천 인기 키워드</p> <p class="desc"> 현재 관심이 높아지고 있는 키워드 입니다. </p> </div> <ul class="keywords"> <li class="keyword-list"> <a href="" class="keyword-link" aria-label="키워드 링크"></a> </li> </ul> </div> </div> <button type="button" class="close-btn" aria-label="검색 화면 닫기 버튼" ></button> </div> </div> <div class="most-view-wrapper"> <div class="most-view"> <p class="most-view-title">많이 본 뉴스</p> <ul class="ranks"> <li class="ranks-list"> <a class="ranks-link" href="" aria-label="많이 본 뉴스 링크"> <div class="thumbnail"> <img src="" alt="" class="thumbnail-img" onerror="javascript:handleError(this);" /> <span></span> <span class="rank-badge">1</span> </div> <p class="title"></p> </a> </li> </ul> </div> </div> </div> <!-- 프로그레스바 --> <div class="progress-bar"></div> </div> <script type="text/javascript"> $(function () { // 많이 본 뉴스 불러오기 getHeaderManyWatchingKbsNews(); getTagData(); getWordCloud(); }); // 검색영역 많이 본 뉴스 function getHeaderManyWatchingKbsNews() { getExposeData(329, getParameterByName('pubExec'), function (data) { if (data.length > 0) { for (var i = 0; i < Math.min(data.length, 6); i++) { var $li = $('.most-view-wrapper ul li').first().clone(); $li.find('a').attr('href', data[i].url); $li.find('.thumbnail span.rank-badge').text(i + 1); $li.find('img').attr('src', data[i].imgUrl).attr('alt', data[i].title); if (data[i].vodUrl) { $li.find('img').next('span').addClass('play-icon'); } $li.find('p.title').text(data[i].title) $('.most-view-wrapper ul').append($li); } $('.most-view-wrapper ul li').first().remove(); } }); } function getTagData() { getExposeData(867, getParameterByName('pubExec'), function (data) { if (data.length > 0) { for (var i = 0; i < data.length; i++) { var $li = $('.header-nav ul.hashtag-links li').first().clone(); // 헤더 태그 html 태그 제거 var tag = (data[i].title).split('<span>').join('').split('</span>').join(''); $li.find('a').text(tag).attr('href', data[i].url); $('.header-nav ul.hashtag-links').append($li); } } $('.header-nav ul.hashtag-links li').first().remove(); }); } function getWordCloud() { var $btn = document.querySelector(".hamburger-search-btns .search-btn"); if ($btn) { $btn.addEventListener("click", function () { $.get('/expose/wordcloud.json', function (data) { var keys = Object.keys(data).map(function (key) { return parseInt(key, 10); }); var latestKey = Math.max.apply(null, keys); var latestData = data[latestKey]; if (latestData !== undefined && latestData !== null) { var sortedKeys = Object.entries(latestData) .sort(function (a, b) { return b[1] - a[1]; }) .map(function (item) { return item[0]; }); for (var i = 0; i < Math.min(sortedKeys.length, 7); i++) { var $li = $('ul.keywords li').first().clone(); $li.find('a').text('# ' + sortedKeys[i]); $li.find('a').attr('href', "/news/pc/search/search.do?query=" + sortedKeys[i]); $('ul.keywords').append($li); } $('ul.keywords li').first().remove(); } }); }, {once:true}); } } function hamburgerClick() { var $btn = document.querySelector(".hamburger-btn"); var $navMenu = document.querySelector(".header-nav"); var $fullMenu = document.querySelector(".full-menu-wrapper"); var $navLinks = document.querySelectorAll(".nav-link"); var $commonMenues = document.querySelectorAll(".common-menu"); var $dim = document.querySelector(".dim"); var $body = document.querySelector("body"); if ($dim) { if ($btn.classList.contains("on")) { $btn.classList.remove("on"); $navMenu.classList.remove("on"); $fullMenu.classList.remove("on"); $dim.classList.remove("on"); $body.classList.remove("hidden"); $navLinks.forEach(function ($navLink) { $navLink.classList.remove("on"); }); $commonMenues.forEach(function ($commonMenu) { $commonMenu.classList.remove("on"); }); } else if (!$btn.classList.contains("on")) { $btn.classList.add("on"); $navMenu.classList.add("on"); $fullMenu.classList.add("on"); $dim.classList.add("on"); $body.classList.add("hidden"); $body.classList.add("on"); } } } </script> <div class="disaster-rolling-wrapper" style="display: none;"> <div class="disaster-rolling"> <div class="swiper disaster-rolling-swiper"> <ul class="swiper-wrapper"> <li class="swiper-slide disaster-rolling-list"> <p class="rolling-message"> </p> </li> </ul> </div> <button type="button" class="arrow-btn" aria-label="재난문자 펼침 버튼"></button> </div> </div> <script type="text/javascript"> $(function () { //867.html script getExposeData(863, getParameterByName('pubExec'), function (data, status) { var list863 = data; if (list863[0].url != "1111") { $(".disaster-rolling-wrapper").css('display', 'none'); isHeaderDisasterLoaded = true; return; } else { $('.disaster-rolling-wrapper').css('display', ''); $('.rolling-message').html(list863[1].contents); var arr = list863[1].contents.split("\n"); for (var i = 0; i < arr.length; i++) { var $li = $('.disaster-rolling-wrapper ul li').first().clone(); $li.find('p').text(arr[i]); if (list863[0].subTitle != null && list863[0].subTitle) { var $span = $("<span class='caution'></span>").text(list863[0].subTitle); $li.find('p').prepend($span); } $('.disaster-rolling-wrapper ul').append($li); } $('.disaster-rolling-wrapper ul li').first().remove(); headerUi.disasterRolling(); isHeaderDisasterLoaded = true; } }, globalErrorHandler); }); </script> <div class="header-notice-wrapper" style="display: none;"> <div class="header-notice"> <p class="notice-title">공지사항</p> <a href="/news/pc/popup/notice.html" target="_blank" class="notice-txt" aria-label="공지사항 링크"></a> </div> </div> <script> $(function () { getExposeData('notice', getParameterByName('pubExec'), function (data) { if (data.noticeTop == 'Y') { $('.header-notice-wrapper').css("display", ''); $('.header-notice-wrapper a.notice-txt').text(data.noticeTitle); } isHeaderNoticeLoaded = true; if (data.noticeBottom == 'Y') { $('.footer-notice-wrapper').css("display", ''); $('.footer-notice-wrapper a').text(data.noticeTitle); } }); }); </script> </header> <script type="text/javascript"> $(function () { setDate(); if (isMobile() && getParameterByName('mode') != 'pc') { var currentURL = window.location.href; var mobileURL = currentURL.replace('/pc/', '/mobile/'); location.href = mobileURL; } var link = document.location.href; var newsURL = "https://news.kbs.co.kr/news/pc/main/main.html"; $('#login_id').prop('href', "https://sso.kbs.co.kr/SSO/KBSWeb/Logon.php?from_url=" + link); $('#register_id').prop('href', "https://sso.kbs.co.kr/SSO2/KBSWeb/member/MemberJoin00SN.php?from_url=" + newsURL); logonCheck(); getAllLocalWeatherInfo(function (data) { if (data.length > 0) { for (var i = 0; i < data.length; i++) { var weather = data[i]; var $li = $('.weather-login-menu .weather ul li').first().clone(); if (weather.icon != '-') { $li.find('img').attr('src', '/resource/image/pc/weather/dark/' + weather.icon + '.png').attr('alt', weather.icon); } $li.find('img').onerror = function () { this.style.display = 'none'; }; $li.find('span.city-name').text(weather.localName); $li.find('span.temperature').text(weather.temperature+'℃'); $li.find('span.weather-info').text(weather.weatherText); $('.weather-login-menu .weather ul').append($li); } $('.weather-login-menu .weather ul li').first().remove(); headerUi.weatherRolling(); } else { $('.weather-login-menu .weather ul').remove(); } }, function (error) { $('.weather-login-menu .weather ul').remove(); }); getDisasterShortText(); getMainAnniversaryDays(); }); function setDate() { const today = dayjs().locale('ko').format('YYYY.MM.DD dddd'); $('.weather-login-menu .today').text(today); } // 숫자가 10 미만이면 앞에 '0'을 붙이는 함수 function padWithZero(num) { if (num < 10) { return '0' + num; } return num.toString(); } function getDisasterShortText() { getExposeData('disasterShortText', getParameterByName('pubExec'), function (data) { var $link = $("#disaster-portal-link"); var $links = $("#disaster-portal-link a"); var $a = $links.last().clone(); $links.last().remove(); if (data.exposeYN === "Y" && data.disasterShortText) { $a.text(data.disasterShortText).attr("href", data.disasterShortTextURL); $a.attr('target', '_blank'); $link.append($a); } else { $link.addClass('single-siren') } }); } function getMainAnniversaryDays() { getExposeData('mainAnniversaryDays', getParameterByName('pubExec'), function (data) { var koreaDate = dayjs(getKoreaTime()).format("YYYYMMDDHHmmss"); for (var i = 0; i < data.length; i++) { if (data[i].startDateTime <= koreaDate && koreaDate <= data[i].endDateTime) { $(".header-logo-link").addClass(data[i].className); break; } } }) } </script> <style> .weather-cache-area { height: 0; } .weather-cache-area img { height: 0; } </style> <main id="contents"> <div class="local-news-quick-menu-wrapper"> <div class="local-news-quick-menu local-news-01"> <div class="title-wrapper"> <h4 class="title"></h4> <p class="sub-title"></p> <ul class="sns-links"> <li class="sns-links-list"> <a href="#" class="sns-link youtube" target="_blank" title="KBS 지역 뉴스 유튜브 페이지"></a> </li> <li class="sns-links-list"> <a href="#" class="sns-link facebook" target="_blank" title="KBS 지역 뉴스 페이스북 페이지"></a> </li> <li class="sns-links-list"> <a href="#" class="sns-link instagram" target="_blank" title="KBS 지역 뉴스 인스타그램 페이지"></a> </li> <li class="sns-links-list"> <a href="#" class="sns-link tiktok" target="_blank" title="KBS 지역 뉴스 틱톡 페이지"></a> </li> <li class="sns-links-list"> <a href="#" class="sns-link kakao" target="_blank" title="KBS 지역 뉴스 카카오톡채널 페이지"></a> </li> </ul> </div> <div class="quick-menu"> <ul class="menu-links"> <li class="menu-links-list"> <a href="#" class="menu-link"></a> </li> </ul> <button type="button" class="close-button"></button> </div> <button type="button" class="local-news-quick-menu-button"> <span class="text">다른 지역 바로가기</span> <span class="arrow"></span> </button> </div> </div> <div class="box head-line padding-24 no-radius local-news"> <div class="box-contents"> <div class="main-news-wrapper"> <a href="#" class="main-news box-content"> <div class="thumbnail width-604"> <img class="img" src="" alt="" onerror="javascript:handleError(this);"/> <span class="play-icon large"></span> </div> <div class="txt-wrapper"> <p class="title"></p> <p class="news-txt"></p> <p class="date"></p> </div> </a> </div> <div class="sub-news-wrapper box-contents direction-column"> <a href="#" class="box-content"> <div class="thumbnail width-290"> <img src="" alt="" class="img" onerror="javascript:handleError(this);"/> <span class="play-icon medium"></span> </div> <div class="txt-wrapper"> <p class="title normal-weight"></p> <p class="date"></p> </div> </a> <a href="#" class="box-content"> <div class="thumbnail width-290"> <img src="" alt="" class="img" onerror="javascript:handleError(this);"/> <span class="play-icon medium"></span> </div> <div class="txt-wrapper"> <p class="title normal-weight"></p> <p class="date"></p> </div> </a> </div> <div class="text-news-wrapper box-contents direction-column"> <div class="box-contents direction-column"> <a href="#" class="box-content has-border"> <div class="txt-wrapper"> <p class="title normal-weight small-font"> <span class="text-cut"></span> <span class="text-play-icon small"></span> </p> <p class="date"></p> </div> </a> <a href="#" class="box-content has-border"> <div class="txt-wrapper"> <p class="title normal-weight small-font"> <span class="text-cut"></span> <span class="text-play-icon small"></span> </p> <p class="date"></p> </div> </a> <a href="#" class="box-content has-border"> <div class="txt-wrapper"> <p class="title normal-weight small-font"> <span class="text-cut"></span> <span class="text-play-icon small"></span> </p> <p class="date"></p> </div> </a> </div> <a href="#" class="gradient-thumbnail"> <img src="" alt="" onerror="javascript:handleError(this);"/> <div class="gradient"></div> <div class="text-wrapper"> <p class="text"></p> <span class="play-icon"></span> </div> </a> </div> </div> </div> <div class="box most-viewed padding-24 local-news local-most-viewed"> <div class="box-title space-between"> <h4 class="title">많이 본 뉴스</h4> <a href="#" id="local-look-more" class="look-more"> <span class="txt">더보기</span> <span class="plus-btn"></span> </a> </div> <div class="box-contents local-ranking-news-wrapper"> <a href="#" class="box-content local-ranking-news"> <div class="thumbnail"> <img src="/resource/image/pc/thum_headline_1.jpg" alt="test img" class="img" onerror="javascript:handleError(this);"/> <span class=""></span> <span class="rank-badge"></span> </div> <div class="txt-wrapper"> <p class="title normal-weight"></p> <p class="reporter"></p> </div> </a> </div> </div> <div class="box main-list padding-24 local"> <h4 class="all-news-title" style="display: none;"></h4> <ul class="custom-tab-btns type-02 type-02-02 local-custom-tab-btns" data-tab-contents="local-news"> <li class="tab-btns-list"><button type="button" class="tab-btn" onclick="javascript:setTag(0); return false;">전체뉴스</button></li> <li class="tab-btns-list"><button type="button" class="tab-btn" onclick="javascript:setTag(1); return false;">뉴스광장</button></li> <li class="tab-btns-list"><button type="button" class="tab-btn" onclick="javascript:setTag(2); return false;">930뉴스</button></li> <li class="tab-btns-list"><button type="button" class="tab-btn" onclick="javascript:setTag(3); return false;">뉴스7</button></li> <li class="tab-btns-list"><button type="button" class="tab-btn" onclick="javascript:setTag(4); return false;">뉴스9</button></li> <li class="tab-btns-list"><button type="button" class="tab-btn" onclick="javascript:setTag(5); return false;">특보</button></li> </ul> <ul class="tab-contents" id="local-news-tab"> <li class="tab-contents-list"> <div class="newsList-head"> <div class="datepicker-wrapper"> <button type="button" class="previous-button" onclick="moveDate('prev')"></button> <label for="datepicker" class="datepicker-label"> <span class="date"></span> <span class="day"></span> </label> <input type="text" id="datepicker" style="display: none;"> <button type="button" class="next-button" onclick="moveDate('next')"></button> </div> <label class="all-select common-checkbox"> <input type="checkbox" /> <span class="custom-checkbox"></span> 전체 선택 </label> <div class="play-buttons-wrapper"> <button type="button" class="select-cancel-button"> <span class="text">선택취소</span> <span class="check-icon"></span> </button> <button type="button" class="select-play-button"> <span class="text">선택재생</span> <span class="check-icon"></span> </button> <button type="button" class="all-play-button"> <span class="text">전체재생</span> <span class="play-icon"></span> </button> <button type="button" class="select-check-play-button"> <span class="text">선택재생</span> <span class="play-icon"></span> </button> </div> </div> <div class="box-contents has-wrap tab-box-contents"> <a href="#" class="box-content flex-style local" style="display: none;"> <div class="thumbnail"> <img class="img" src="" alt="" onerror="javascript:handleError(this);"/> <label class="common-checkbox"> <input type="checkbox" /> <span class="custom-checkbox"></span> </label> <span class="play-icon medium"></span> </div> <div class="txt-wrapper"> <p class="title"></p> <p class="news-text"></p> <div class="field-writer"> <span class="field"></span> <span class="writer"></span> </div> </div> </a> </div> <div class="common-pagination"> <button type="button" class="double-prev-button"></button> <button type="button" class="prev-button"></button> <ul class="number-buttons"> </ul> <button type="button" class="next-button"></button> <button type="button" class="double-next-button"></button> </div> </li> </ul> </div> </main> <script> var kLocalArea = '71'; let contentsCode = ''; const firstDt = "1987.01.01"; let lastDt = dayjs().format("YYYYMMDD"); let searchDate = dayjs().format("YYYYMMDD"); let dateType = "day"; let dateFormat = "YYYYMMDD"; let dotFormat = "YYYY.MM.DD"; var currentPageNo = 1; // 현재 페이지 번호 let rowsPerPage = 12; const visiblePageCount = 5; // 보여질 페이지 개수 let totalNewsCount = 0; // 전체 아이템 개수 let maxPageNo = 0; // 전체 페이지 개수 let tagIdx = 0; var vodList = {}; var popupIndex = 0; // var lastNewsDate = ''; var showRanklscd = [10, 11, 20, 30, 40, 50, 60, 70, 80, 81, 90]; var orderSeq = "broadDate_desc,broadOrder_asc"; var dataPopPlayer = {}; var localNameList = ["부산", "울산", "창원", "진주", "대구", "안동", "포항", "광주", "목포", "순천", "전주", "대전", "청주", "충주", "춘천", "강릉", "원주", "제주"]; var localNameCode = [10, 11, 20, 21, 30, 31, 32, 40, 41, 43, 50, 60, 70, 71, 80, 81, 82, 90]; var headlineCode = [1007, 1008, 1009, 1010, 1011, 1012, 1013, 1014, 1015, 1016, 1017, 1018, 1019, 1020, 1021, 1022, 1023, 1024]; var initLocalNameCode = [10, 20, 30, 40, 50, 60, 70, 80, 90, 11, 81]; var headerTitle = { "10": "동북아 해양수도 물류 중심 기지 KBS 부산", "11": "산업수도 울산의 소식을 전합니다", "30": "대구경북 시도민과 함께, KBS 대구", "32": "환동해 중심을 꿈꾼다, KBS 포항", "40": "정확·공정·신뢰, KBS 광주 뉴스", "43": "생태의 보고 산업의 중심 KBS 순천", "70": "국토의 중심, 미래의 중심, KBS 충북", "71": "국토의 중심, 미래의 중심, KBS 충북" }; var localBroadCodeList = { // 뉴스광장 930 뉴스7 뉴스9 특보/속보 "10": { newsplaza: "0082", news930: "0139", news7: "0080", news9: "0079", flash: "0140" }, "11": { newsplaza: "0083", news930: "0084", news7: "0085", news9: "0086", flash: "0141" }, "20": { newsplaza: "0089", news930: "0142", news7: "0088", news9: "0087", flash: "0143" }, "21": { newsplaza: "0144", news930: "0145", news7: "0092", news9: "0091", flash: "0146" }, "30": { newsplaza: "0096", news930: "0095", news7: "0094", news9: "0093", flash: "0147" }, "31": { newsplaza: "0148", news930: "0149", news7: "0098", news9: "0097", flash: "0150" }, "32": { newsplaza: "0152", news930: "0153", news7: "0151", news9: "0099", flash: "0154" }, "40": { newsplaza: "0104", news930: "0103", news7: "0102", news9: "0101", flash: "0155" }, "41": { newsplaza: "0156", news930: "0157", news7: "0105", news9: "0106", flash: "0158" }, "43": { newsplaza: "0159", news930: "0160", news7: "0109", news9: "0108", flash: "0161" }, "50": { newsplaza: "0113", news930: "0112", news7: "0111", news9: "0110", flash: "0162" }, "60": { newsplaza: "0117", news930: "0116", news7: "0115", news9: "0114", flash: "0163" }, "70": { newsplaza: "0121", news930: "0120", news7: "0119", news9: "0118", flash: "0164" }, "71": { newsplaza: "0165", news930: "0166", news7: "0123", news9: "0122", flash: "0167" }, "80": { newsplaza: "0127", news930: "0126", news7: "0125", news9: "0124", flash: "0168" }, "81": { newsplaza: "0169", news930: "0128", news7: "0130", news9: "0129", flash: "0170" }, "82": { newsplaza: "0171", news930: "0172", news7: "0132", news9: "0131", flash: "0173" }, "90": { newsplaza: "0135", news930: "0134", news7: "0133", news9: "0136", flash: "0174" } }; var socialiconMap = { '10': ['https://www.youtube.com/@KBSnewsBUSAN', 'https://www.facebook.com/kbsnewsbusan', '', '', ''], '11': ['https://www.youtube.com/@kbs2689', '', '', '', ''], '20': ['https://www.youtube.com/@kbsnews_gyeongnam', '', '', '', ''], '21': ['https://www.youtube.com/@kbsnews_gyeongnam', '', '', '', ''], '30': ['https://www.youtube.com/@kbs8923', '', '', '', ''], '31': ['https://www.youtube.com/@kbs8923', '', '', '', ''], '32': ['https://www.youtube.com/@kbs8923', '', '', '', ''], '40': ['https://www.youtube.com/@kbsnewsgj', 'https://www.facebook.com/gjkbs/', 'https://www.instagram.com/kbs_gwangju/', '', ''], '41': ['https://www.youtube.com/@kbsnewsgj', 'https://www.facebook.com/gjkbs/', 'https://www.instagram.com/kbs_gwangju/', '', ''], '43': ['https://www.youtube.com/@kbsnewsgj', 'https://www.facebook.com/gjkbs/', 'https://www.instagram.com/kbs_gwangju/', '', ''], '50': ['https://www.youtube.com/channel/UC0QmCmZuE1uQcvqHVg2OYDQ', 'https://www.facebook.com/kbsnewsjeonbuk', 'https://www.instagram.com/jjkbsnews', 'https://www.tiktok.com/@kbsnewsjb', ''], '60': ['https://www.youtube.com/c/KBS%EB%89%B4%EC%8A%A4%EB%8C%80%EC%A0%84', 'https://www.facebook.com/daejeonkbs?mibextid=ZbWKwL', '', '', ''], '70': ['https://www.youtube.com/@kbs_cheongju_official', 'https://www.facebook.com/cheongju.kbs?mibextid=LQQJ4d', '', '', ''], '71': ['https://www.youtube.com/@kbs_cheongju_official', 'https://www.facebook.com/cheongju.kbs?mibextid=LQQJ4d', '', '', ''], '80': ['https://www.youtube.com/@kbs7107', 'https://www.facebook.com/cckbsnews', '', '', ''], '81': ['https://www.youtube.com/@kbs7107', 'https://www.facebook.com/cckbsnews', '', '', ''], '82': ['https://www.youtube.com/@kbs7107', 'https://www.facebook.com/cckbsnews', '', '', ''], '90': ['https://www.youtube.com/channel/UCa4wqP-ZqiP-hsY1PG3pfBw', 'https://www.facebook.com/kbsjejunews?mibextid=ZbWKwL', 'https://www.instagram.com/kbs_news_jeju/', '', 'https://pf.kakao.com/_KLxewC'] } var prevDate = ''; var nextDate = ''; var notFifthTab = false; $(function () { if (!getParameterByName("lscd")) { var randomLocalArea = localNameCode[Math.floor(Math.random() * localNameCode.length)]; location.replace(location.pathname + '?lscd=' + randomLocalArea); } getExposeData('localHeaderTitle', getParameterByName('pubExec'), function (data, status) { headerTitle = data; initHeader(); init(); }); }); function init() { setTitle(localNameList[localNameCode.indexOf(Number(kLocalArea))], headerTitle[kLocalArea]); // 헤드라인 // setHeadline(); // 많이본 뉴스 // if ($.inArray(Number(kLocalArea), showRanklscd) >= 0) { $("#local-look-more").attr("href", "/news/pc/local/rankingList.do#" + kLocalArea); setRankingList(); } else { $(".local-most-viewed").remove(); } getHash(); setDateFormat(); getPrevDt(); goPage(); handlePagiNationClick(); } function getHash() { if (document.location.hash) { var currentUrl = window.location.href; var urlWithoutHash = currentUrl.split('#')[0]; var strHash = document.location.hash; strHash = strHash.replace("#", ""); var hashList = []; hashList = strHash.split("&"); if (hashList[0] && !isNaN(parseInt(hashList[0]))) { tagIdx = parseInt(hashList[0]); } else { window.location.href = urlWithoutHash; } if (hashList[1]) { setTagToBroadCode(tagIdx); getLastNewsDT(); searchDate = validDate(hashList[1]); } else { window.location.href = urlWithoutHash + "#" + tagIdx; } if (hashList[2] && !isNaN(parseInt(hashList[2]))) { currentPageNo = parseInt(hashList[2]); } } else { tagIdx = 0; getLastNewsDT(); searchDate = lastDt; currentPageNo = 1; } } function setHash() { document.location.hash = "#" + tagIdx + "&" + searchDate + "&" + currentPageNo; } function initHeader() { if (kLocalArea == null || kLocalArea == "") { kLocalArea = getLocalArea(); if (kLocalArea == null || kLocalArea == "") { kLocalArea = initLocalNameCode[Math.floor(Math.random() * initLocalNameCode.length)]; } } setLocalInfo(); $("#contents .local-news-quick-menu").addClass("local-news-" + kLocalArea); setSocialIcon(kLocalArea) } function setSocialIcon(lscd) { var socialList = socialiconMap[lscd]; var removeIndexList = [] for (var i = 0; i < socialList.length; i++) { var socialUrl = socialList[i]; if (!socialUrl) { removeIndexList.push(i) } else { $(".local-news-quick-menu-wrapper ul li").eq(i).find("a").attr("href", socialUrl); } } var cnt = removeIndexList.length; for (var i = 0; i < cnt; i++) { var deleteIndex = removeIndexList.pop(); $(".local-news-quick-menu-wrapper ul li").eq(deleteIndex).remove(); } } function setTitle(title, description) { $(".local-news-quick-menu-wrapper .title-wrapper .title").text(title); if (description != null || description != "") { $(".local-news-quick-menu-wrapper .title-wrapper .sub-title").text(description); } } function setLocalInfo() { var url = application.rootUrlPrefix + "/api/getLocalCodeInfo"; var param = { localCode: "" }; var mainLocalName = [ ['부산', '울산'], ['창원', '진주'], ['대구', '안동', '포항'], ['광주', '목포', '순천'], ['전주'], ['대전'], ['청주', '충주'], ['춘천', '강릉', '원주'], ['제주'] ]; postAjax(url, param, function (result, status) { if (result && result.data) { var data = result.data; for (var i = 0; i < mainLocalName.length; i++) { var $li = $(".quick-menu .menu-links .menu-links-list").first().clone(); for (var j = 0; j < mainLocalName[i].length; j++) { var $a = $li.find("a").first().clone(); // sub local // if (j != 0) { $a.addClass("sub-link"); } var localCode = 0; for (var k = 0; k < data.length; k++) { if (mainLocalName[i][j] == data[k].localName) { localCode = data[k].localCode; break; } } $a.text(mainLocalName[i][j]); $a.attr("href", "javascript:goLocal(" + localCode + ");"); $li.append($a); } $li.find("a").first().remove(); $(".quick-menu .menu-links").append($li); } $(".quick-menu .menu-links .menu-links-list").first().remove(); } }); } function goLocal(code) { location.href = "/news/pc/local/local.do?lscd=" + code; } function setLocalArea(local) { setCookie("kLocalArea", local); } function getLocalArea() { var localCode; try { localCode = getCookie("kLocalArea"); } catch (e) { console.log(e); } return localCode; } // mainList function goPage() { setHash(); var ajaxPoll = []; var callback; $("#datepicker").val(dayjs(searchDate).format(dotFormat)); $('.datepicker-label .date').text(dayjs(searchDate).format(dotFormat)); $('.datepicker-label .day').text(dayjs(searchDate).locale('ko').format('dddd')); $(".local-custom-tab-btns .tab-btns-list").removeClass("on"); $(".local-custom-tab-btns .tab-btns-list").eq(tagIdx).addClass("on"); setDatepickerNextButton(); $(".play-buttons-wrapper").css('display', ''); vodList = {}; if (tagIdx == 0) { $(".all-play-button").removeAttr('onclick'); $(".select-check-play-button").removeAttr('onclick'); $("#local-news-tab .play-buttons-wrapper").hide(); callback = allListSucCallback; orderSeq = ""; rowsPerPage = 12; } else { currentPageNo = 1; callback = eachlistSucCallback; if (tagIdx != 5) { $(".all-play-button").attr('onclick', "javascript:playerOpenAllList(vodList);"); $(".select-check-play-button").attr('onclick', "javascript:playerOpenSelectedList(vodList);"); $(".play-buttons-wrapper").css('display', ''); orderSeq = "broadDate_desc,broadOrder_asc"; rowsPerPage = 100; } else if (tagIdx == 5) { $(".all-play-button").removeAttr('onclick'); $(".select-check-play-button").removeAttr('onclick'); $("#local-news-tab .play-buttons-wrapper").hide(); orderSeq = "serviceTime_desc"; rowsPerPage = 500; } } var callArea = ''; if (kLocalArea % 10 != 0 && (kLocalArea != 11 && kLocalArea != 81)) { callArea = kLocalArea + ',' + (parseInt(kLocalArea / 10) * 10); } else { callArea = kLocalArea; } $.ajax({ url: application.rootUrlPrefix + "/api/getNewsListCount", type: "GET", dataType: "json", data: { broadCode: contentsCode, exceptPhotoYn: 'Y', datetimeBegin: dayjs(searchDate).startOf(dateType).format("YYYYMMDDHHmmss"), datetimeEnd: dayjs(searchDate).endOf(dateType).format("YYYYMMDDHHmmss"), localCode: callArea, localCodeWithLocalReporterStationCode: callArea, orderByServiceTimeAsc: "Y", needReporterInfo: 'Y', }, success: function (data, status) { if (data && data.data) { totalNewsCount = data.data; } if (tagIdx == 0) { setPaging(); } } }); ajaxPoll.push({ url: application.rootUrlPrefix + "/api/getNewsList", type: "GET", dataType: 'json', data: { broadCode: contentsCode, exceptPhotoYn: 'Y', datetimeBegin: dayjs(searchDate).startOf(dateType).format("YYYYMMDDHHmmss"), datetimeEnd: dayjs(searchDate).endOf(dateType).format("YYYYMMDDHHmmss"), localCode: callArea, localCodeWithLocalReporterStationCode: callArea, orderByServiceTimeAsc: "Y", rowsPerPage: rowsPerPage, currentPageNo: currentPageNo, needReporterInfo: 'Y', orderBy: orderSeq }, success: function (response) { callback(response); getPrevDt(); commonUi.selectPlayClick(); commonUi.allSelectClick(); } }); callMultipleAjaxOneByOne(ajaxPoll); } // 팝업 항목 선택 function clickPlayList(playDataList, index) { var target = $(".playlist-popup .playlist a").eq(index).position().top; $(".playlist-wrapper").animate({ scrollTop: $(".playlist-wrapper").scrollTop() + target - 121 }, 200); popupIndex = index; $(".playlist-popup .playlist a").removeClass('on'); $(".playlist-popup .playlist a").eq(index + 1).addClass('on'); $(".popup-pagination-wrapper .current-number").text(index + 1); $(".playlist-popup .player-area .title").text(playDataList[index].newsTitle ? playDataList[index].newsTitle : playDataList[index].newsTitle); localKbsPlayer(playDataList, index); } function playerOpenAllList(voidList) { var playList = vodList; if (playList && playList.length <= 0) { alert('재생할 목록이 없습니다.'); return; } dataPopPlayer = { title: playList[0].broadName ? playList[0].broadName : "", date: playList[0].broadDate ? dayjs(playList[0].broadDate).locale('ko').format('YYYY.MM.DD dddd') : dayjs().locale('ko').format('YYYY.MM.DD dddd'), listlength: playList.length, playList: [] }; popupIndex = 0; for (var a = 0; a < playList.length; a++) { if (playList[a].vods.length <= 0) continue; var vod_info = { newsTitle: playList[a].newsTitle, lowVodUrlD_URL: "", imgUrl: playList[a].imgUrl, vodDuration: (playList[a].vodDuration ? playList[a].vodDuration : ""), newsTitle_50: playList[a].newsTitle }; for (var b = 0; b < playList[a].vods.length; b++) { if (playList[a].vods[b].vodType == "D") { vod_info["lowVodUrlD_URL"] = playList[a].vods[b].vodUrl; } if (playList[a].vods[b].vodType == "K") { vod_info["vodUrl"] = playList[a].vods[b].vodUrl; } } dataPopPlayer.playList.push(vod_info); } var $headerNav = document.querySelector("#header .header-nav-wrapper"); var $dim = document.querySelector(".dim"); var $popup = document.querySelector(".playlist-popup"); var $body = document.querySelector("body"); $headerNav.classList.add("index-change"); $dim.classList.add("on"); $popup.classList.add("on"); $body.classList.add("hidden"); $(".playlist-popup .title-area .title").text(dataPopPlayer.title); $(".playlist-popup .title-area .date").text(dataPopPlayer.date); $(".playlist-popup .number").text(dataPopPlayer.listlength); $(".popup-pagination-wrapper .last-number").text(dataPopPlayer.listlength); $(".playlist-popup .playlist a:not(:first-child)").remove(); for (var i = 0; i < dataPopPlayer.playList.length; i++) { (function (index) { var playData = dataPopPlayer.playList[index]; var $a = $(".playlist-popup .playlist a").first().clone(); $a.show(); $a.on('click', function (event) { event.preventDefault(); clickPlayList(dataPopPlayer.playList, index); }); $a.find(".title").text(playData.newsTitle); $a.find(".play-time").text(playData.vodDuration); $a.find("img").attr("src", application.rootUrlPrefix + playData.imgUrl); $(".playlist-popup .playlist").append($a); })(i); } $(".playlist-popup .left-button").off("click").on("click", function () { if (popupIndex == 0) { return } else { var index = popupIndex - 1; clickPlayList(dataPopPlayer.playList, index); } }) $(".playlist-popup .right-button").off("click").on("click", function () { if (popupIndex >= dataPopPlayer.playList.length - 1) { return } else { var index = popupIndex + 1; clickPlayList(dataPopPlayer.playList, index); } }) clickPlayList(dataPopPlayer.playList, 0); } function playerOpenSelectedList(voidList) { var playList = []; $(".main-list .box-contents a.box-content:visible").each(function (index, element) { if ($(element).find(".common-checkbox input").is(':checked')) { playList.push(vodList[index]); } }); if (playList.length <= 0) { alert('재생할 목록이 없습니다.'); return; } dataPopPlayer = { title: playList[0].broadName ? playList[0].broadName : "", date: playList[0].broadDate ? dayjs(playList[0].broadDate).locale('ko').format('YYYY.MM.DD dddd') : dayjs().locale('ko').format('YYYY.MM.DD dddd'), listlength: playList.length, playList: [] }; popupIndex = 0; for (var a = 0; a < playList.length; a++) { if (playList[a].vods.length <= 0) continue; var vod_info = { newsTitle: playList[a].newsTitle, lowVodUrlD_URL: "", imgUrl: playList[a].imgUrl, vodDuration: (playList[a].vodDuration ? playList[a].vodDuration : ""), newsTitle_50: playList[a].newsTitle }; for (var b = 0; b < playList[a].vods.length; b++) { if (playList[a].vods[b].vodType == "D") { vod_info["lowVodUrlD_URL"] = playList[a].vods[b].vodUrl; } if (playList[a].vods[b].vodType == "K") { vod_info["vodUrl"] = playList[a].vods[b].vodUrl; } } dataPopPlayer.playList.push(vod_info); } var $headerNav = document.querySelector("#header .header-nav-wrapper"); var $dim = document.querySelector(".dim"); var $popup = document.querySelector(".playlist-popup"); var $body = document.querySelector("body"); $headerNav.classList.add("index-change"); $dim.classList.add("on"); $popup.classList.add("on"); $body.classList.add("hidden"); $(".playlist-popup .title-area .title").text(dataPopPlayer.title); $(".playlist-popup .title-area .date").text(dataPopPlayer.date); $(".playlist-popup .number").text(dataPopPlayer.listlength); $(".popup-pagination-wrapper .last-number").text(dataPopPlayer.listlength); $(".playlist-popup .playlist a:not(:first-child)").remove(); for (var i = 0; i < dataPopPlayer.playList.length; i++) { (function (index) { var playData = dataPopPlayer.playList[index]; var $a = $(".playlist-popup .playlist a").first().clone(); $a.show(); $a.on('click', function (event) { event.preventDefault(); clickPlayList(dataPopPlayer.playList, index); }); $a.find(".play-time").text(playData.vodDuration); $a.find(".title").text(playData.newsTitle); $a.find("img").attr("src", application.rootUrlPrefix + playData.imgUrl); $(".playlist-popup .playlist").append($a); })(i); } $(".playlist-popup .left-button").off("click").on("click", function () { if (popupIndex == 0) { return } else { var index = popupIndex - 1; clickPlayList(dataPopPlayer.playList, index); } }) $(".playlist-popup .right-button").off("click").on("click", function () { if (popupIndex >= dataPopPlayer.playList.length - 1) { return } else { var index = popupIndex + 1; clickPlayList(dataPopPlayer.playList, index); } }) clickPlayList(dataPopPlayer.playList, 0); } // 많이본 뉴스 function setRankingList() { var actionUrl = application.rootUrlPrefix + "/api/getLocalRankingNewsList"; $.ajax({ url: actionUrl, type: "GET", dataType: 'json', data: { localCode: kLocalArea, currentPageNo: 1, rowsPerPage: 5 }, success: function (result, status) { if (result && result.data) { var data = result.data; if (data.length > 0) { for (var i = 0; i < data.length; i++) { var $a = $(".local-ranking-news-wrapper .local-ranking-news").first().clone(); $a.attr("href", "/news/pc/view/view.do?ncd=" + data[i].newsCode); $a.find(".rank-badge").text(i + 1); $a.find("img").attr("src", application.rootUrlPrefix + data[i].imgUrl); $a.find("img").attr("alt", data[i].newsTitle); $a.find(".title").html(data[i].newsTitle); var reporterText = ''; if (data[i].sourceCode != "200" && data[i].menuName != "" && data[i].menuName != null) { reporterText = data[i].menuName + ' / '; } else { reporterText = data[i].listCategory + ' / '; } reporterText += data[i].reporterName; $a.find(".reporter").text(reporterText); if (data[i].vodYn == 'Y') { $a.find("img").next("span").addClass("play-icon"); } $(".local-ranking-news-wrapper").append($a); } $(".local-ranking-news-wrapper .local-ranking-news").first().remove(); } else { $(".local-most-viewed").remove(); } } else { $(".local-most-viewed").remove(); } } }); } function setHeadline() { var hCode = headlineCode[localNameCode.indexOf(Number(kLocalArea))]; var defaultSucCallback = function (data, status) { data = data['manualList']; for (var i = 0; i < 7; i++) { if (i == 0) { var $a = $(".local-news .main-news-wrapper .box-content"); $a.attr("href", data[i].url); $a.find("img").attr("src", application.rootUrlPrefix + data[i].imgUrl).attr("alt", data[i].mobileTitle); $a.find(".title").html(data[i].title); if (data[i].vodUrl == "" || data[i].vodUrl == null) { $a.find(".play-icon").remove(); } $a.find(".news-txt").html(data[i].contents); $a.find(".date").text(dayjs(data[i].serviceTime).format(dotFormat)); } else if (i == 1 || i == 2) { var $a = $(".local-news .sub-news-wrapper .box-content").eq(i - 1); $a.attr("href", data[i].url); $a.find("img").attr("src", application.rootUrlPrefix + data[i].imgUrl).attr("alt", data[i].mobileTitle); $a.find(".title").html(data[i].title); if (data[i].vodUrl == "" || data[i].vodUrl == null) { $a.find(".play-icon").remove(); } $a.find(".news-txt").html(data[i].contents); $a.find(".date").text(dayjs(data[i].serviceTime).format(dotFormat)); } else if (i == 3 || i == 4 || i == 5) { var $a = $(".local-news .text-news-wrapper .direction-column .box-content").eq(i - 3); $a.attr("href", data[i].url); $a.find(".title .text-cut").html(data[i].title); if (data[i].vodUrl == "" || data[i].vodUrl == null) { $a.find(".text-play-icon").remove(); } $a.find(".date").text(dayjs(data[i].serviceTime).format(dotFormat)); } else { var $a = $(".local-news .text-news-wrapper .gradient-thumbnail"); $a.attr("href", data[i].url); $a.find("img").attr("src", application.rootUrlPrefix + data[i].imgUrl).attr("alt", data[i].mobileTitle); if (!data[i].vodUrl) { $a.find(".play-icon").remove(); } $a.find(".text").html(data[i].title); } } }; var orderSucCallback = function (_data, order) { data = []; for (var i = 0; i < order.length; i++) { data.push(_data['manualList'][parseInt(order[i]) - 1]); } for (var i = 0; i < 7; i++) { if (i == 0) { var $a = $(".local-news .main-news-wrapper .box-content"); $a.attr("href", data[i].url); $a.find("img").attr("src", application.rootUrlPrefix + data[i].imgUrl).attr("alt", data[i].mobileTitle); $a.find(".title").html(data[i].title); if (data[i].vodUrl == "" || data[i].vodUrl == null) { $a.find(".play-icon").remove(); } $a.find(".news-txt").html(data[i].contents); $a.find(".date").text(dayjs(data[i].serviceTime).format(dotFormat)); } else if (i == 1 || i == 2) { var $a = $(".local-news .sub-news-wrapper .box-content").eq(i - 1); $a.attr("href", data[i].url); $a.find("img").attr("src", application.rootUrlPrefix + data[i].imgUrl).attr("alt", data[i].mobileTitle); $a.find(".title").html(data[i].title); if (data[i].vodUrl == "" || data[i].vodUrl == null) { $a.find(".play-icon").remove(); } $a.find(".news-txt").html(data[i].contents); $a.find(".date").text(dayjs(data[i].serviceTime).format(dotFormat)); } else if (i == 3 || i == 4 || i == 5) { var $a = $(".local-news .text-news-wrapper .direction-column .box-content").eq(i - 3); $a.attr("href", data[i].url); $a.find(".title .text-cut").html(data[i].title); if (data[i].vodUrl == "" || data[i].vodUrl == null) { $a.find(".text-play-icon").remove(); } $a.find(".date").text(dayjs(data[i].serviceTime).format(dotFormat)); } else { var $a = $(".local-news .text-news-wrapper .gradient-thumbnail"); $a.attr("href", data[i].url); $a.find("img").attr("src", application.rootUrlPrefix + data[i].imgUrl).attr("alt", data[i].mobileTitle); $a.find(".text").html(data[i].title); } } }; var headLineCallback = function (data, state) { if (data['parentLocal']) { // 을국 if (data['parseType'] == 'auto') { // 총국 자동 파싱 ord = data['autoList']; getExposeData(data['parentLocal'], getParameterByName('pubExec'), function (_data) { orderSucCallback(_data, ord); }); } else if (data['parseType'] == 'manual') { // 을국 수동 파싱 var mList = data['manualList']; for (var i = 0; i < mList.length; i++) { if (i == 0) { var $a = $(".local-news .main-news-wrapper .box-content"); $a.attr("href", mList[i].url); $a.find("img").attr("src", application.rootUrlPrefix + mList[i].imgUrl).attr("alt", mList[i].mobileTitle); $a.find(".title").html(mList[i].title); if (mList[i].vodUrl == "" || mList[i].vodUrl == null) { $a.find(".play-icon").remove(); } $a.find(".news-txt").html(mList[i].contents); $a.find(".date").text(dayjs(mList[i].serviceTime).format(dotFormat)); } else if (i == 1 || i == 2) { var $a = $(".local-news .sub-news-wrapper .box-content").eq(i - 1); $a.attr("href", mList[i].url); $a.find("img").attr("src", application.rootUrlPrefix + mList[i].imgUrl).attr("alt", mList[i].mobileTitle); $a.find(".title").html(mList[i].title); if (mList[i].vodUrl == "" || mList[i].vodUrl == null) { $a.find(".play-icon").remove(); } $a.find(".news-txt").html(mList[i].contents); $a.find(".date").text(dayjs(mList[i].serviceTime).format(dotFormat)); } else if (i == 3 || i == 4 || i == 5) { var $a = $(".local-news .text-news-wrapper .direction-column .box-content").eq(i - 3); $a.attr("href", mList[i].url); $a.find(".title .text-cut").html(mList[i].title); if (mList[i].vodUrl == "" || mList[i].vodUrl == null) { $a.find(".text-play-icon").remove(); } $a.find(".date").text(dayjs(mList[i].serviceTime).format(dotFormat)); } else { var $a = $(".local-news .text-news-wrapper .gradient-thumbnail"); $a.attr("href", mList[i].url); $a.find("img").attr("src", application.rootUrlPrefix + mList[i].imgUrl).attr("alt", mList[i].mobileTitle); $a.find(".text").html(mList[i].title); } } } // 프로그램 리스트 정리 // if (kLocalArea != 11 && kLocalArea != 81) { $(".local.main-list ul li:not(:first-child)").remove(); var pLocalName = ""; switch (kLocalArea) { case "21": pLocalName = "창원"; break; case "31": case "32": pLocalName = "대구"; break; case "41": case "43": pLocalName = "광주"; break; case "71": pLocalName = "청주"; break; case "82": pLocalName = "춘천"; break; } $(".local .all-news-title").text(pLocalName + ' 총국의 뉴스도 함께 제공됩니다'); $(".local .all-news-title").show(); $(".local .type-02-02").hide(); } } else { getExposeData(hCode, getParameterByName('pubExec'), defaultSucCallback); } }; getExposeData(hCode, getParameterByName('pubExec'), headLineCallback); } // DatePicker // function getLastNewsDT() { if ($.inArray(Number(kLocalArea), localNameCode) >= 0) { var beginDate = dayjs().subtract(1, "years").startOf('day').format("YYYYMMDDHHmmss"); var callArea = ''; if (kLocalArea % 10 != 0 && (kLocalArea != 11 && kLocalArea != 81)) { callArea = kLocalArea + ',' + (parseInt(kLocalArea / 10) * 10); } else { callArea = kLocalArea; } var param = { broadCode: contentsCode, exceptPhotoYn: 'Y', localCode: callArea, localCodeWithLocalReporterStationCode: callArea, orderByServiceTimeAsc: "Y", datetimeBegin: beginDate, datetimeEnd: dayjs().format("YYYYMMDDHHmmss"), rowsPerPage: 1 }; getNewsListLastDateTimeAsync(param, false, function successCallback(data) { if (data && data.data) { lastDt = dayjs(data.data).format(dateFormat); } else { lastDt = dayjs().format(dateFormat); } }); } else { lastDt = dayjs().format(dateFormat); } } function getPrevDt() { if (tagIdx != 0) { if (dateType == "month") { var selectedDT = dayjs(searchDate).startOf(dateType).format(dateFormat); var param = { broadCode: contentsCode, broadDate: selectedDT, }; $.ajax({ url: application.rootUrlPrefix + "/api/getPreNextBroadDate", type: "GET", dataType: "json", data: param, success: function (data) { if (data && data.data && data.data.prevDate) { prevDate = data.data.prevDate; } else { prevDate = ''; } } }); selectedDT = dayjs(searchDate).endOf(dateType).format(dateFormat); var param = { broadCode: contentsCode, broadDate: selectedDT }; $.ajax({ url: application.rootUrlPrefix + "/api/getPreNextBroadDate", type: "GET", dataType: "json", data: param, success: function (data) { if (data && data.data && data.data.nextDate) { nextDate = data.data.nextDate; } else { nextDate = ''; } } }); } else { var param = { broadCode: contentsCode, broadDate: dayjs(searchDate).format(dateFormat), }; $.ajax({ url: application.rootUrlPrefix + "/api/getPreNextBroadDate", type: "GET", dataType: "json", data: param, success: function (data) { if (data && data.data && data.data.prevDate) { prevDate = data.data.prevDate; } else { prevDate = ''; } if (data && data.data && data.data.nextDate) { nextDate = data.data.nextDate; } else { nextDate = ''; } } }); } } else { prevDate = ''; nextDate = ''; } } // mainList function setDatePicker() { const monthNames = ['01', '02', '03', '04', '05', '06', '07', '08', '09', '10', '11', '12']; const dayNames = ['일', '월', '화', '수', '목', '금', '토']; const $datepicker = $("#datepicker"); const $datepickerLabel = $(".datepicker-label"); // 기존 DatePicker 제거 $("#datepicker").datepicker("destroy"); // dateType이 month면 datepicker 사용X if( dateType == "month") { $datepickerLabel.off("click"); return; } // DatePicker 재생성 $("#datepicker").datepicker({ dateFormat: "yy.mm.dd", changeMonth: true, changeYear: true, minDate: new Date(dayjs(firstDt)), maxDate: new Date(dayjs(lastDt)), yearRange: 'c-50:c', monthNames: monthNames, monthNamesShort: monthNames, showMonthAfterYear: true, dayNames: dayNames, dayNamesShort: dayNames, dayNamesMin: dayNames, showButtonPanel: true, // 캘린더 하단에 버튼 패널을 표시한다. currentText: '', closeText: '', // 닫기 버튼 패널, beforeShow: function (input) { const datepickerLabelOffsetTop = Math.floor($datepickerLabel.offset().top); const datepickerLabelOffsetLeft = Math.floor($datepickerLabel.offset().left); const datepickerLabelHeight = Math.floor($datepickerLabel.height()); const datepickerLabelWidth = Math.floor($datepickerLabel.outerWidth() / 2); const datepickerTop = datepickerLabelOffsetTop + datepickerLabelHeight; const datepickerLeft = datepickerLabelOffsetLeft + datepickerLabelWidth; setTimeout(function () { $("#ui-datepicker-div").css({ 'top': datepickerTop, 'left': datepickerLeft, 'transform': 'translateX(-50%)', 'z-index': 100, }); }); }, onClose: function(dateString, inst) { dateString = validDate(dateString); const hashDate = window.location.hash.replace("#", "").split("&")[0]; if(dateString == hashDate) return; moveDate(dateString); inst.input.blur(); }, }); $datepickerLabel.off("click").on("click", ()=>{ if ($datepicker.datepicker("widget").is(":visible")) { $datepicker.datepicker("hide"); } else { $datepicker.datepicker("show"); } }); } function moveDate(obj) { currentPageNo = 1; $("#datepicker").blur(); let addDay = 0; let dateString = validDate($("#datepicker").val()); switch(obj) { case "prev": if(prevDate) { searchDate = dayjs(prevDate).format(dateFormat); } else { addDay = -1; searchDate = dayjs(searchDate).add(addDay, dateType).format(dateFormat); } break; case "next": if(nextDate) { searchDate = dayjs(nextDate).format(dateFormat); } else { addDay = 1; searchDate = dayjs(searchDate).add(addDay, dateType).format(dateFormat); } break; default: searchDate = dayjs(dateString).add(addDay, dateType).format(dateFormat); break; } goPage(); } function setTagToBroadCode(tagIdx) { if (tagIdx == 0) { contentsCode = ''; } else if (tagIdx == 1) { contentsCode = localBroadCodeList[kLocalArea].newsplaza; } else if (tagIdx == 2) { contentsCode = localBroadCodeList[kLocalArea].news930; } else if (tagIdx == 3) { contentsCode = localBroadCodeList[kLocalArea].news7; } else if (tagIdx == 4) { contentsCode = localBroadCodeList[kLocalArea].news9; } else if (tagIdx == 5) { contentsCode = localBroadCodeList[kLocalArea].flash; } else { contentsCode = ''; } } // CallBack 전체뉴스 function allListSucCallback(res, status) { $(".common-pagination").show(); if ( !res || !res.data || res.data.length == 0 ) { displayNoData(); return; } var data = res.data; $("#local-news-tab .error-icon-wrapper").remove(); $("#local-news-tab div:not(.common-pagination, .play-buttons-wrapper)").show(); $("#local-news-tab .box-content:not(:first)").remove(); for (var i = 0; i < data.length; i++) { var $a = $("#local-news-tab .box-content").first().clone(); $a.show() $a.attr("href", "/news/pc/view/view.do?ncd=" + data[i].newsCode); $a.find("img").attr("src", application.rootUrlPrefix + data[i].imgUrl); $a.find("img").attr("alt", data[i].mobileTitle); $a.find(".title").html(data[i].newsTitle); if (data[i].vodYn != "Y") { $a.find(".play-icon").remove(); } var contents = getStringRemoveTag(data[i].newsContents); if (contents != "") { contents = contents.substr(0, 100).concat('...'); } $a.find(".news-text").text(contents); if (data[i].reporters == null) { $a.find(".writer").html("KBS지역국"); } else { $a.find(".writer").html(data[i].reporterName); } $a.find(".field").text(data[i].listCategory); $("#local-news-tab .box-contents").append($a); } }; function eachlistSucCallback(res, status) { $(".common-pagination").hide(); if ( !res || !res.data || res.data.length == 0 ) { displayNoData(); return; } var data = res.data; $("#local-news-tab .error-icon-wrapper").remove(); $("#local-news-tab div:not(.common-pagination, .play-buttons-wrapper)").show(); vodList = data; $("#local-news-tab .box-content:not(:first)").remove(); for (var i = 0; i < data.length; i++) { var $a = $("#local-news-tab .box-content").first().clone(); $a.show(); $a.attr("href", "/news/pc/view/view.do?ncd=" + data[i].newsCode); $a.find("img").attr("src", application.rootUrlPrefix + data[i].imgUrl); $a.find("img").attr("alt", data[i].mobileTitle); $a.find(".title").html(data[i].newsTitle); if (data[i].vodYn == "Y") { $a.find("img").next("span").find(".ico-play").remove(); } if (tagIdx == 5) { $a.find(".field").text(dayjs(data[i].serviceTime, "YYYY-MM-DD HH:mm:ss").format("YYYY.MM.DD (HH:mm)")); $a.find(".writer").remove(); } else { if (data[i].reporters == null) { $a.find(".writer").html("KBS지역국"); } else { $a.find(".writer").text(data[i].reporterName); } if (data[i].menuName == 'null' || data[i].menuName == null) { $a.find(".field").text("뉴스"); } else { $a.find(".field").text(data[i].menuName); } } $("#local-news-tab .box-contents").append($a); } }; function setPaging() { // await setTotalNewsCount(); maxPageNo = Math.ceil(totalNewsCount / rowsPerPage); const $pagination = $(".common-pagination"); if(maxPageNo < 1) { $pagination.hide(); return; } $pagination.show(); const $pageList = $pagination.find(".number-buttons"); $pageList.empty(); var startPage = Math.max(1, currentPageNo - Math.floor(visiblePageCount / 2)); var endPage = Math.min(startPage + visiblePageCount - 1, maxPageNo); if (endPage - startPage < visiblePageCount - 1) { startPage = Math.max(1, endPage - visiblePageCount + 1); } for (var i = startPage; i <= endPage; i++) { let currentClass = (currentPageNo == i) ? 'on' : ''; let $li = ` <li class='number-buttons-list'> <button type='button' class='number-button ${currentClass}' id='page${i}' data-page='${i}'>${i}</button> </li> `; $pageList.append($li); } checkPaginationButton(); } function handlePagiNationClick() { $(".common-pagination .prev-button").off("click").on("click", () => movePage(currentPageNo-1)); $(".common-pagination .double-prev-button").off("click").on("click", () => movePage(1)); $(".common-pagination .next-button").off("click").on("click", () => movePage(currentPageNo+1)); $(".common-pagination .double-next-button").off("click").on("click", () => movePage(maxPageNo)); $(document).off("click").on("click", ".number-button", function(e) { const _this = $(e.target); const pageNumber = _this.data('page'); if (currentPageNo == pageNumber) return; movePage(pageNumber); }) } function checkPaginationButton() { const $pagination = $(".common-pagination"); var $prevButton = $pagination.find(".prev-button"); var $doublePrevButton = $pagination.find(".double-prev-button"); var $nextButton = $pagination.find(".next-button"); var $doubleNextButton = $pagination.find(".double-next-button"); if (currentPageNo > 1) { $prevButton.prop("disabled", false); $doublePrevButton.prop("disabled", false); } else { $prevButton.prop("disabled", true); $doublePrevButton.prop("disabled", true); } if (currentPageNo < maxPageNo) { $nextButton.prop("disabled", false); $doubleNextButton.prop("disabled", false); } else { $nextButton.prop("disabled", true); $doubleNextButton.prop("disabled", true); } } function movePage(idx) { currentPageNo = idx; goPage(); // getPaging(); } function goToPage(pageNumber) { currentPageNo = pageNumber; setPaging(); } function setPage(i) { currentPageNo = i; goPage(); } function setTag(i) { if (tagIdx != i) { currentPageNo = 1; tagIdx = i; setDateFormat(); setTagToBroadCode(tagIdx); getLastNewsDT(); searchDate = lastDt; goPage(); } } function setDatepickerNextButton() { if (dayjs(searchDate).add(1, dateType).format(dotFormat) > dayjs(lastDt).format(dotFormat)) { $(".datepicker-wrapper .next-button").attr('disabled', true); } else { $(".datepicker-wrapper .next-button").removeAttr('disabled'); } } function validDate(dateString) { dateString = dateString.replaceAll(/[^0-9]/g, ""); dateString = dayjs(dateString).format(dateFormat); if(dateString == "Invalid Date") { dateString = dayjs(lastDt).format(dateFormat); } else if( dateString > lastDt ) { dateString = dayjs(lastDt).format(dateFormat); } else if ( dateString < firstDt ) { dateString = dayjs(firstDt).format(dateFormat); } return dateString; } // tagIdx: 0~4: day, 5 이상은 month function setDateFormat() { if( tagIdx < 5 ) { notFifthTab = true; dateType = "day" dateFormat = "YYYYMMDD"; dotFormat = "YYYY.MM.DD"; } else { notFifthTab = false; dateType = "month" dateFormat = "YYYYMM"; dotFormat = "YYYY.MM"; } $("#datepicker").val(dayjs(searchDate).format(dotFormat)); $("#datepicker").attr("val-type", dateType); $(".datepicker-label").attr("data-datetype", dateType); $(".datepicker-label .date").text(dayjs(searchDate).format(dotFormat)); $(".datepicker-label .day").text(dayjs(searchDate).locale('ko').format('dddd')); setDatePicker(); } function displayNoData() { $("#local-news-tab .error-icon-wrapper").remove(); $("#local-news-tab .play-buttons-wrapper").hide(); const HTML = ` <div class="error-icon-wrapper"> <div class="error-icon"></div> <p class="no-data-text">뉴스 정보가 없습니다.</p> </div> `; $(".main-list.local .box-contents").hide().after(HTML); $(".common-pagination").hide(); } </script> <script type="text/javascript" src="/resource/module/jwplayer-8.27.1/jwplayer.js" ></script> <script type="text/javascript"> jwplayer.key="UsFIIKTGG5dCwbpy/MFAeh8gCKNka+06Oi4PBaWF2/Rz/nk/"; </script> <link rel="stylesheet" type="text/css" href="/resource/css/pc/sub/kbs-player.css"/> <div class="playlist-popup"> <div class="title-area"> <div class="title-wrapper"> <p class="title">뉴스</p> <p class="date"></p> </div> <button type="button" class="close-button"></button> </div> <div class="player-playlist-area"> <div class="player-area"> <div class="player-app"> <div class="player-wrap"> <div id="playerElement" tabindex="0"></div> </div> </div> <p class="title"></p> <div class="popup-pagination-wrapper"> <div class="popup-pagination"> <button type="button" class="left-button"></button> <div class="numbers"> <span class="current-number">1</span> <span class="slash">/</span> <span class="last-number">1</span> </div> <button type="button" class="right-button"></button> </div> </div> </div> <div class="playlist-area"> <div class="title-wrapper"> <p class="title">재생목록 <span class="number">24</span></p> </div> <div class="playlist-wrapper"> <div class="playlist"> <!-- 재생중인 비디오 --> <a href="#" class="video" style="display: none;"> <div class="thumbnail"> <img src="" alt="" onerror="javascript:handleError(this);"/> <span class="play-time"></span> </div> <p class="title"></p> </a> </div> </div> </div> </div> </div> <script> function localKbsPlayer(playDataList, index) { var playData = playDataList[index]; if (navigator.cookieEnabled) { if (typeof localStorage !== 'undefined') { localStorage.removeItem('jwplayer.captionLabel'); } } // KbsPlayer() 인스턴스 객체를 self에 할당함. // 객체 내부에서 접근하기 위해 사용 var self = this; var defaults = { playerWidth: 760, playerHeight: 443, isShortcuts: false, isAutoPlay: false, isCaption: true, vodPlayType: "vod_play_type", mediaFile: [], }; // jwplayer 파라미터 담는 객체 this.vodParams = {} // jwplayer 기본 설정값 // 함수 arguments와 defaults 값을 가져와 settings에 기본 설정함 this.settings = (arguments[0] && typeof arguments[0] == "object") ? extendDefaults(defaults, arguments[0]) : defaults; var lowVod = playData.lowVodUrlD_URL; var hiVod = playData.vodUrl; var captionYn = 'N'; if (lowVod) { var lowVodUrl = getKBSHlsVodUrl(lowVod); this.SD = { file: lowVodUrl, label: '표준화질' } } if (lowVod != hiVod) { if (hiVod) { var hiVodUrl = getKBSHlsVodUrl(hiVod); this.HD = { file: hiVodUrl, label: '고화질' } } } this.volume = localStorage.getItem('jwplayer-volume') ? parseInt(localStorage.getItem('jwplayer-volume')) : 50; // jwplayer 객체 this.vodPlayer = {}; this.init = function () { this.build(); this.vodPlayer.on("ready", function () { var videoElements = document.querySelectorAll('video'); videoElements.forEach(function(video) { video.setAttribute('disablePictureInPicture', 'true'); }); var $playButton = $(".jw-icon.jw-icon-inline.jw-button-color.jw-reset.jw-icon-playback"); $(window).on("scroll", function () { if ($(window).scrollTop() > 900) { $playButton.css("margin-right", "0px"); } else { $playButton.css("margin-right", "15px"); } }); self.initControl(); // 최초 자막 if (localStorage.getItem('Caption') != 'true') { $('.jw-captions').css('display', 'none'); } // 키보드 조작 document.getElementById("playerElement").addEventListener('keydown', function (e) { if (e.keyCode == 37) { // ← self.moveBackward(); e.preventDefault(); } else if (e.keyCode == 39) { // → self.moveForward(); e.preventDefault(); } else if (e.keyCode == 38) { // ↑ self.soundUp(); e.preventDefault(); } else if (e.keyCode == 40) { // ↓ self.soundDown(); e.preventDefault(); } else if (e.keyCode == 32) { // spaceBar self.pause(); e.preventDefault(); } else if (e.keyCode == 70) { // f self.fullscreen(); e.preventDefault(); } else if (e.keyCode == 77) { // m self.mute(); e.preventDefault(); } }); self.preRenderForAnimation(); }); // 최초 실행시 앞으로 가기 버튼 추가 this.vodPlayer.on("play", function () { $(".vod-recommed-list").remove(); if (!$(".jw-display-controls.jw-reset .jw-display-icon-forward").length) { // 5초 앞으로 재생 버튼 추가 self.renderForwardButton(); // 자동 재생시 플레이어에 포커스를 줘서 키보드 조작이 바로 가능하게 한다. document.getElementById("playerElement").focus(); } }); if (this.vodPlayer.getPlaylist()[0].sources.length == 0) { getKBSHlsVodUrl(lowVod); var errMsg = $(".error-message"); errMsg.css("display", ""); errMsg.text(message); } var $playlistPopup = $(".playlist-popup.on"); var $headerNav = $("#header .header-nav-wrapper"); var $dim = $(".dim"); var $popup = $(".playlist-popup"); var $closeBtn = $(".playlist-popup .title-area .close-button"); var $body = $("body"); function handleClick(event) { if (!$(event.target).closest($playlistPopup).length) { $closeBtn.click(); } } $dim.on("click", handleClick); $closeBtn.off("click").on("click", function() { $headerNav.removeClass("index-change"); $dim.removeClass("on"); $popup.removeClass("on"); $body.removeClass("hidden"); $dim.off("click", handleClick); if (self && self.vodPlayer) { self.vodPlayer.pause(); } }); } // jwplayer 파라미터 가져오기 this.getVodParams = function () { var result = { playlist: [{ image: self.settings.imgUrl, sources: [], }], // 자막 style captions: { state: true, color: '#FFFFFF', fontFamily: '"Dotum", "돋움", "Gulim", "굴림"', fontSize: 18, backgroundOpacity: 75, edgeStyle: "uniform" }, playbackRateControls: true, // 재생 속도 컨트롤 활성화 playbackRates: [0.5, 0.8, 1, 1.2, 1.5, 1.8, 2, 3], // 재생 속도 설정 enableShortcuts: this.settings.isShortcuts, // 키보드 단축키 비활성화 autostart: true, mute: false, volume: this.volume, aspectratio: '16:9', // 화면 비율 설정 (height 설정 무시 -> height가 없어도 됨) width: this.settings.playerWidth, height: this.settings.playerHeight, repeat: false, // 반복 재생 horizontalVolumeSlider: true, // 사운드바 가로로 controls: true, } if (hiVod) { result.playlist[0].sources.push(this.HD); } if (lowVod) { result.playlist[0].sources.push(this.SD); } return result } // jwplayer 객체 생성 this.build = function () { this.vodParams = this.getVodParams(); this.vodPlayer = jwplayer('playerElement').setup(this.vodParams); // jwplayer 파일 버퍼링일 때 this.vodPlayer.on("buffer", function () { if (self.vodPlayer.getState() == 'buffering') { $(".jw-icon-forward").hide(); // 영상 재생 완료 후 렌더링된 추천동영상을 다시 삭제함 if ($(".vod-recommed-list").css('display') != 'none') { $(".vod-recommed-list").remove(); } } }); var moveTimeout; // jwplayer 영상 재생 중 this.vodPlayer.on("play", function () { var playerContainer = $('#' + "playerElement").parent().parent(); playerContainer.off("mouseenter mousemove mouseleave"); playerContainer.on('mouseenter', function() { $('#' + "playerElement").find('.jw-controls').show(); }); playerContainer.on('mousemove', function() { clearTimeout(moveTimeout); $('#' + "playerElement").find('.jw-controls').show(); moveTimeout = setTimeout(function() { $('#' + "playerElement").find('.jw-controls').hide(); }, 1000); }); playerContainer.on('mouseleave', function() { clearTimeout(moveTimeout); $('#' + "playerElement").find('.jw-controls').hide(); }); $(".jw-icon-forward").show(); // 영상 재생 완료 후 렌더링된 추천동영상을 다시 삭제함 if ($(".vod-recommed-list").css('display') != 'none') { $(".vod-recommed-list").remove(); } }); // jwplayer 영상 일시 정지 this.vodPlayer.on("pause", function () { var playerContainer = $('#' + "playerElement").parent().parent(); clearTimeout(moveTimeout); playerContainer.off("mouseenter mousemove mouseleave"); $('#' + "playerElement").find('.jw-controls').show(); $(".jw-icon-forward").show(); // 영상 재생 완료 후 렌더링된 추천동영상을 다시 삭제함 if ($(".vod-recommed-list").css('display') != 'none') { $(".vod-recommed-list").remove(); } }); // 재생 완료 후 추천동영상 렌더링 this.vodPlayer.on("complete", function () { $(".jw-timesegment-bar.jw-buffer").css("width", "100%"); $(".jw-timesegment-bar.jw-progress").css("width", "100%"); if (playDataList.length > index+1) { index = index+1; popupIndex = index; var target = $(".playlist-popup .playlist a").eq(index).position().top; $(".playlist-wrapper").animate({ scrollTop: $(".playlist-wrapper").scrollTop() + target - 121 }, 200); $(".playlist-popup .playlist a").removeClass('on'); $(".playlist-popup .playlist a").eq(index + 1).addClass('on'); $(".popup-pagination-wrapper .current-number").text(index + 1); $(".playlist-popup .player-area .title").text(playDataList[index].newsTitle ? playDataList[index].newsTitle : ""); var lowVod = playDataList[index].lowVodUrlD_URL ? playDataList[index].lowVodUrlD_URL : ""; var hiVod = playDataList[index].vodUrl ? playDataList[index].vodUrl : ""; var newSources = []; if (lowVod) { var lowVodUrl = getKBSHlsVodUrl(lowVod); newSources.push({ file: lowVodUrl, label: '표준화질' }); } if (lowVod != hiVod) { if (hiVod) { var hiVodUrl = getKBSHlsVodUrl(hiVod); newSources.push({ file: hiVodUrl, label: '고화질' }); } } var newPlaylist = [{ sources: newSources, }] // 동영상을 변경 self.vodPlayer.playlistItem(0); self.vodPlayer.load(newPlaylist); self.vodPlayer.playlistItem(0); } else { var playerContainer = $('#' + "playerElement").parent().parent(); clearTimeout(moveTimeout); playerContainer.off("mouseenter mousemove mouseleave"); $('#' + "playerElement").find('.jw-controls').show(); self.removeForwardButton(); } // var playerContainer = $('#' + "playerElement").parent().parent(); // clearTimeout(moveTimeout); // playerContainer.off("mouseenter mousemove mouseleave"); // $('#' + "playerElement").find('.jw-controls').show(); // // self.removeForwardButton(); // // setTimeout(function () { // $(".playlist-popup .right-button").click(); // }, 10) }); // 볼륨이 변경되면 localStorage에 값을 추가 this.vodPlayer.on('volume', function (event) { localStorage.setItem('jwplayer-volume', event.volume); }); } // jwplayer 커버 클릭했을 때 최초 렌더링 this.initControl = function () { // 키보드 조작 설명 $(".keyinfo-wrap").css('display', 'block'); $(".keyinfo-wrap").css('z-index', '100'); self.preRenderKeyControlInfo(); } // 영상 재생 10초 뒤로 this.moveBackward = function () { this.moveSeek(-10) } // 영상 재생 10초 앞으로 this.moveForward = function () { this.moveSeek(10); } // 사운드 5포인트 크게 this.soundUp = function () { this.moveVolume(5); $(".jw-animation.ani-volume").text(parseInt(self.vodPlayer.getVolume())+"%"); $(".jw-animation.ani-volume").stop(true, true).fadeIn().delay(300).fadeOut(); } // 사운드 5포인트 작게 this.soundDown = function () { this.moveVolume(-5); $(".jw-animation.ani-volume").text(parseInt(self.vodPlayer.getVolume())+"%"); $(".jw-animation.ani-volume").stop(true, true).fadeIn().delay(300).fadeOut(); } // 재생 영상 앞으로 뒤로 이동시킴 this.moveSeek = function (sec) { var moveTo = this.vodPlayer.getPosition() + sec if (moveTo < 0) { moveTo = 0 } else if (moveTo > this.vodPlayer.getDuration()) { moveTo = this.vodPlayer.getDuration() } this.vodPlayer.seek(moveTo) } // 사운드 볼륨을 크게 작게 함 this.moveVolume = function (percent) { var volume = this.vodPlayer.getVolume() + percent if (volume < 0) { volume = 0 } else if (volume > 100) { volume = 100 } this.vodPlayer.setVolume(volume) } // 영상 일시 정지하거나 다시 재생시킴 this.pause = function () { if (this.vodPlayer.getState() == 'playing') { this.vodPlayer.pause() } else if (this.vodPlayer.getState() == 'paused' || this.vodPlayer.getState() == 'complete') { this.vodPlayer.play() } } // 영상 풀스크린으로 보이게 this.fullscreen = function () { if (this.vodPlayer.getFullscreen()) { this.vodPlayer.setFullscreen(false) } else { this.vodPlayer.setFullscreen(true) } } // 음소거 this.mute = function () { if (jwplayer().getMute()) { jwplayer().setMute(false); } else { jwplayer().setMute(true); } } // 자막 보이게 안 보이게 토글 기능 this.toggleCaption = function () { var $captions = $('.jw-captions') if ($captions.css('display') != 'none') { $captions.css('display', 'none'); $(".jw-button-caption").removeClass('on'); localStorage.setItem('Caption', 'false') } else { $captions.css('display', ''); $(".jw-button-caption").addClass('on'); localStorage.setItem('Caption', 'true') } } this.embedVideo = function () { var vod = ''; if (hiVod) { vod = hiVod; } else { vod = lowVod; } var embedVideoUrl = application.rootUrlPrefix + '/news/pc/view/embedVideo.do?vodUrl=' + vod + '&imgUrl=' + self.settings.imgUrl + '&captionYn=' + captionYn; // var embedVideoUrl = 'http://tnews.kbs.co.kr' + '/news/pc/view/embedVideo.do?vodUrl=' + vod + '&imgUrl=' + self.settings.imgUrl + '&captionYn=' + captionYn; var embedUrl = '<iframe width="100%" height="100%" src="' + embedVideoUrl + '" ' + 'title="video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; ' + 'encrypted-media; gyroscope; web-share" allowfullscreen><iframe>'; $('.video-embed-popup .embed-text').html(embedUrl); $('.video-embed-popup').addClass("on"); $('.dim').addClass("on"); $('.body').addClass("on"); $('.header-nav-wrapper').addClass("index-change"); } // 영상 재생시 10초 앞으로/뒤 이동, 사운드 크게/작게, 일시정지/다시 재생 할 때 표시용 애니메이션 미리 렌더링 this.preRenderForAnimation = function () { var $divVolume = $('<div class="jw-animation ani-volume" style="display: none"></div>'); $("#playerElement").append($divVolume); } // jwplayer에 10초 앞으로 이동 버튼 삽입 this.renderForwardButton = function () { var $buttonForward = $('<div class="jw-display-icon-container jw-display-icon-forward jw-reset"></div>'); var $iconForward = '<div class="jw-icon jw-icon-forward jw-button-color jw-reset" role="button"></div>'; $buttonForward.append($iconForward); $(".jw-display-controls.jw-reset").append($buttonForward); $(".jw-display-icon-container.jw-display-icon-forward.jw-reset").on('click', function () { self.moveForward(); }); } // jwplayer에 10초 앞으로 이동 버튼 삭제 this.removeForwardButton = function () { $(".jw-display-controls.jw-reset .jw-display-icon-forward").first().remove(); } // jwplayer에 키보드 컨트롤 안내창 삽입 this.preRenderKeyControlInfo = function () { var $wrapKeyInfo = $('<div class="keyinfo-wrap"></div>'); var $buttonKeyInfo = $('<button type="button" class="button-keyinfo" title="키보드 컨트롤 안내">i</button>'); var $divKeyInfo = $('<div class="keyinfo-box" style="display: none"></div>'); var $keyinfoClose = $('<button type="button" class="close-keyinfo" title="키보드 컨트롤 안내 닫기"></button>'); var $keyinfoContent1 = '<p>센스리더 사용자는 가상커서를 해제한 후<br>동영상플레이어 단축키를 이용하세요.<br>(가상커서 해제 단축키 : 컨트롤 + 쉬프트 + F12)</p>'; var $keyinfoContent2 = '<p>좌 / 우 방향키는 시간이 - 10 / +10로 이동되며,<br>상 / 하 방향키는 음량이 + 5 / -5로 조절됩니다.<br>스페이스 바를 누르시면 영상이 재생 / 중단 됩니다.</p>'; $divKeyInfo.append($keyinfoClose, $keyinfoContent1, $keyinfoContent2); $wrapKeyInfo.append($buttonKeyInfo, $divKeyInfo); $(".playlist-popup .player-wrap .keyinfo-wrap").remove(); $("#" + "playerElement").after($wrapKeyInfo); $(".keyinfo-wrap").css('z-index', '100'); $("#" + "playerElement").siblings('.keyinfo-wrap').find(".button-keyinfo").off('click').on('click', function (e) { e.preventDefault(); $("#" + "playerElement").siblings('.keyinfo-wrap').find(".keyinfo-box").toggle(); }); $("#" + "playerElement").siblings('.keyinfo-wrap').find(".close-keyinfo").off('click').on('click', function (e) { e.preventDefault(); $("#" + "playerElement").siblings('.keyinfo-wrap').find(".keyinfo-box").hide(); }); } this.init(); // arguments와 defaults의 property를 가져와 속성을 합치는 함수 function extendDefaults(defaults, props) { var prop; for (prop in props) { if (props.hasOwnProperty(prop)) { defaults[prop] = props[prop]; } } return defaults; } } // 페이스북 공유 function shareFacebook() { var shareUrl = 'https://www.facebook.com/sharer/sharer.php?u=' + encodedCurrentUrl; openPopup(shareUrl); } // 트위터 공유 function shareTwitter() { var shareUrl = "https://twitter.com/intent/tweet?url=" + encodedCurrentUrl; openPopup(shareUrl); } // 카카오공유 function shareKakao() { var shareDesc = document.getElementById('facebook_desc').getAttribute('content'); var shareImg = document.getElementById('facebook_img').getAttribute('content'); var mShareUrl = currentUrl; Kakao.Link.sendDefault({ objectType: "feed" , content: { title: "KBS News" // 콘텐츠의 타이틀 , description: shareDesc // 콘텐츠 상세설명 , imageUrl: shareImg // 썸네일 이미지 , link: { webUrl: currentUrl, // 모바일 카카오톡에서 사용하는 웹 링크 URL } }, buttons: [ { title: '웹으로 이동', link: { mobileWebUrl: mShareUrl, webUrl: currentUrl }, }, ] }); //sendDefualt } // 카카오스토리 공유 function shareKakaoStory() { var origin = currentUrl.match(/^(https?:\/\/[^/]+)/)[1]; var shareUrl = "https://story.kakao.com/s/share?url=" + currentUrl + "&kakao_agent=sdk%2F1.43.1%20os%2Fjavascript%20sdk_type%2Fjavascript%20lang%2Fko-KR%20device%2FWin32%20origin%2F" + origin + "&app_key=d57b7eca9db04c5ccd91e4d309ce0288"; openPopup(shareUrl); } // 네이버블로그 공유 function shareNaverBlog() { var shareUrl = 'http://blog.naver.com/openapi/share?url=' + encodedCurrentUrl + '&title='; openPopup(shareUrl); } // 네이버밴드 공유 function shareNaverBand() { var shareUrl = "https://band.us/plugin/share?body=" + encodedCurrentUrl + "&route=" + encodedCurrentUrl; openPopup(shareUrl); } function getKBSHlsVodUrl(vodUrl) { if (isEmpty(vodUrl)) { message = 'VOD URL 정보가 없습니다.' return null; } var cdnYn = 'N', duty = 'N', blockingYn = 'N'; if (vodUrl.indexOf('|') == 0) { var vodInfos = vodUrl.split('|'); duty = vodInfos[1]; cdnYn = vodInfos[2]; blockingYn = vodInfos[3]; vodUrl = vodInfos[4]; } cdnYn = 'Y'; //무조건 cdn으로 실행 if (duty.indexOf('^') >= 0) { var dutyInfos = duty.split('^'); dutyYn = dutyInfos[0]; if (dutyYn == 'Y') { duty_code = dutyInfos[1]; if (!isEmpty(duty_code)) { var dutyMsg = ''; $.ajax({ url: application.rootUrlPrefix + '/news/getVodDutyCodeMsg.do', type: "POST", async: false, dataType: 'json', data: {dutyCode: duty_code}, success: function (data, status) { if (!isEmpty(data.dutyMsg) && data.dutyMsg.resultcode == 1) { dutyMsg = data.dutyMsg.duty_msg; } else { dutyMsg = '저작권 관련 서비스 사용이 불가합니다.'; } }, error: function (request, status, error) { dutyMsg = '저작권 관련 서비스 사용이 불가합니다.'; } }); message = dutyMsg; return null; } } } else { dutyYn = duty; } if (dutyYn == 'Y') { message = '저작권 관련 서비스 사용이 불가합니다.'; return null; } if ("Y" == blockingYn) { var blocking = ''; $.ajax({ url: application.rootUrlPrefix + '/api/getIpInfo', type: "POST", async: false, dataType: 'json', success: function (data, status) { if (!isEmpty(data.isAbroadIp)) { blocking = data.isAbroadIp; //해외 IP 확인 } }, error: function (request, status, error) { blocking = 'N'; } }); if ("N" == blocking) { message = '저작권 관련 서비스 사용이 불가합니다.'; return; } } // VOD URL 조회 if (isEmpty(vodUrl)) { message = 'VOD URL 정보가 없습니다.'; return null; } if (vodUrl.indexOf("/") == 0) { vodUrl = vodUrl.substr(1); } var vodExt = vodUrl.substring(vodUrl.length - 3); var hlsUrl = null; if (cdnYn == 'Y') { $.ajax({ // url: CONTEXTPATH + '/api/getHlsNewsVodUrl', url: application.rootUrlPrefix + '/api/getHlsNewsVodUrl', type: "POST", async: false, dataType: 'json', data: {vodUrl: vodUrl}, success: function (data, status) { if (data.success) { hlsUrl = data.data.streamUrl; } else { hlsUrl = null; message = data.message; } }, error: function (request, status, error) { hlsUrl = null; message = 'VOD Url 정보를 가지고 오는데 실패하였습니다. >> [' + error + ']'; } }); } return hlsUrl; } </script> <footer id="footer"> <div class="full-menu-wrapper"> <div class="full-menu"> <h2 class="blind">전체메뉴</h2> <div class="common-menu field-menu"> <div class="full-menu-links-wrapper"> <h3>분야별</h3> <div class="full-menu-links-group"> <ul class="full-menu-links"> <li><a href="/news/pc/category/category.do?ref=pSiteMap">전체</a></li> <li><a href="/news/pc/category/category.do?ctcd=0003&ref=pSiteMap">정치</a></li> <li><a href="/news/pc/category/category.do?ctcd=0004&ref=pSiteMap">경제</a></li> <li><a href="/news/pc/category/category.do?ctcd=0005&ref=pSiteMap">사회</a></li> <li><a href="/news/pc/category/category.do?ctcd=0008&ref=pSiteMap">문화</a></li> <li><a href="/news/pc/category/category.do?ctcd=0007&ref=pSiteMap">IT·과학</a></li> <li><a href="/news/pc/category/category.do?ctcd=0006&ref=pSiteMap">국제</a></li> <li><a href="/news/pc/category/category.do?ctcd=0095&ref=pSiteMap">재난·기후·환경</a></li> <li><a href="/news/pc/category/category.do?ctcd=0034&ref=pSiteMap">생활·건강</a></li> <li><a href="/news/pc/sports/sports.html?ref=pSiteMap">스포츠</a></li> <li><a href="/news/pc/enter/enter.html?ref=pSiteMap">연예</a></li> <li><a href="/news/pc/menu/listWeather.do?mcd=0048&ref=pSiteMap">날씨</a></li> <li><a href="/news/pc/issue/issue.html?ref=pSiteMap">이슈</a></li> </ul> </div> </div> </div> <div class="common-menu tv-menu"> <div class="full-menu-links-wrapper"> <h3>TV 뉴스</h3> <div class="full-menu-links-group"> <h4>1TV 뉴스</h4> <ul class="full-menu-links col-2"> <li><a href="/news/pc/program/program.do?bcd=0004&ref=pSiteMap">06:00 뉴스광장 1부</a></li> <li><a href="/news/pc/program/program.do?bcd=0010&ref=pSiteMap">17:00 뉴스 5</a></li> <li><a href="/news/pc/program/program.do?bcd=0003&ref=pSiteMap">07:00 뉴스광장 2부</a></li> <li><a href="/news/pc/program/program.do?bcd=0011&ref=pSiteMap">19:00 뉴스 7</a></li> <li><a href="/news/pc/program/program.do?bcd=0008&ref=pSiteMap">09:30 930뉴스</a></li> <li><a href="/news/pc/program/program.do?bcd=0001&ref=pSiteMap">21:00 뉴스 9</a></li> <li><a href="/news/pc/program/program.do?bcd=0009&ref=pSiteMap">12:00 뉴스 12</a></li> <li><a href="/news/pc/program/program.do?bcd=0012&ref=pSiteMap">22:50 뉴스라인 W</a></li> <li><a href="/news/pc/program/program.do?bcd=0137&ref=pSiteMap">14:00 뉴스 2</a></li> </ul> </div> <div class="full-menu-links-group col-2"> <h4>2TV 뉴스</h4> <ul class="full-menu-links"> <li><a href="/news/pc/program/program.do?bcd=0016&ref=pSiteMap">10:10 아침뉴스타임</a></li> <li><a href="/news/pc/program/program.do?bcd=0049&ref=pSiteMap">15:00 뉴스타임</a></li> <li><a href="/news/pc/program/program.do?bcd=0197&ref=pSiteMap">15:15 월드24</a></li> <li><a href="/news/pc/program/program.do?bcd=0199&ref=pSiteMap">18:00 경제콘서트</a></li> </ul> </div> <div class="full-menu-links-group col-2"> <h4>1TV 경인</h4> <ul class="full-menu-links"> <li><a href="/news/pc/program/program.do?bcd=0060&ref=pSiteMap">뉴스광장(경인)</a></li> <li><a href="/news/pc/program/program.do?bcd=0059&ref=pSiteMap">930뉴스(경인)</a></li> <li><a href="/news/pc/program/program.do?bcd=0051&ref=pSiteMap">뉴스7(경인)</a></li> <li><a href="/news/pc/program/program.do?bcd=0052&ref=pSiteMap">뉴스9(경인)</a></li> </ul> </div> <div class="full-menu-links-group"> <h4><a href="/news/pc/program/program.do?bcd=0042&ref=pSiteMap">뉴스특보</a></h4> </div> </div> </div> <div class="common-menu premiumk-menu"> <div class="full-menu-links-wrapper"> <h3>심층취재</h3> <ul class="full-menu-links col-2"> <li><a href="/news/pc/menu/menu.do?mcd=1127&ref=pSiteMap">심층K</a></li> <li><a href="/news/pc/menu/menu.do?mcd=0713&ref=pSiteMap">단독</a></li> <li><a href="/news/pc/menu/tamsaKList.do?mcd=1016&ref=pSiteMap">탐사K</a></li> <li><a href="/news/pc/menu/menu.do?mcd=1075&ref=pSiteMap">제대로 보겠습니다</a></li> <li><a href="/news/pc/menu/menu.do?mcd=0990&ref=pSiteMap">영상K</a></li> <li><a href="/news/pc/menu/menu.do?mcd=0938&ref=pSiteMap">크랩</a></li> <li><a href="/news/pc/menu/menu.do?mcd=1048&ref=pSiteMap">글로벌K</a></li> <li><a href="/news/pc/menu/menu.do?mcd=1032&ref=pSiteMap">팩트체크K</a></li> <li><a href="/news/pc/menu/menu.do?mcd=1039&ref=pSiteMap">스포츠K</a></li> </ul> <ul class="full-menu-links col-2"> <li><a href="/news/pc/menu/menu.do?mcd=0795&ref=pSiteMap">취재후</a></li> <li><a href="/news/pc/program/program.do?bcd=0023&ref=pSiteMap">News Today</a></li> <li class="w100"><a href="/news/pc/menu/menu.do?mcd=1126&ref=pSiteMap">주말엔</a></li> <li class="w100"><a href="/news/pc/menu/menu.do?mcd=1162&ref=pSiteMap">뒷北뉴스</a></li> <li class="w100"><a href="/special/climatesays/2023/main.html?&ref=pSiteMap">기후는 말한다</a></li> <li class="w100"><a href="/news/pc/menu/menu.do?mcd=1044&ref=pSiteMap">여심야심</a></li> </ul> </div> </div> <div class="common-menu current-affairs-menu"> <div class="full-menu-links-wrapper"> <h3>시사프로그램</h3> <div class="full-menu-links-group"> <h4>시사프로그램</h4> <ul class="full-menu-links"> <li><a href="/news/pc/sisa/sisaChang.do?ref=pSiteMap">시사기획 창</a></li> <li><a href="/news/pc/sisa/sisa.do?bcd=0029&ref=pSiteMap">일요진단 라이브</a></li> <li><a href="/news/pc/sisa/sisa.do?bcd=0198&ref=pSiteMap">더 보다</a></li> <li><a href="/news/pc/sisa/sisa.do?bcd=0031&ref=pSiteMap">남북의 창</a></li> <li><a href="/news/pc/sisa/sisa.do?bcd=0072&ref=pSiteMap">특파원 보고 세계는 지금</a></li> <li><a href="/news/pc/sisa/sisa.do?bcd=0071&ref=pSiteMap">재난방송센터</a></li> <li><a href="/news/pc/sisa/sisa.do?bcd=0073&ref=pSiteMap">사사건건</a></li> <li><a href="/news/pc/sisa/sisa.do?bcd=0061&ref=pSiteMap">인사이드 경인</a></li> </ul> </div> <div class="full-menu-links-group"> <h4>라디오</h4> <ul class="full-menu-links"> <li><a href="/news/pc/radio/radio.do?mcd=1139&ref=pSiteMap">전격시사</a></li> <li><a href="/news/pc/radio/radio.do?mcd=1125&ref=pSiteMap">성공예감</a></li> <li><a href="/news/pc/radio/radio.do?mcd=1138&ref=pSiteMap">뉴스레터K</a></li> </ul> </div> </div> </div> <div class="common-menu region-menu"> <div class="full-menu-links-wrapper"> <h3>지역뉴스</h3> <div class="full-menu-links-group"> <ul class="full-menu-links col-2"> <li><a href="/news/pc/local/local.do?lscd=10&ref=pSiteMap">부산</a></li> <li><a href="/news/pc/local/local.do?lscd=43&ref=pSiteMap">순천</a></li> <li><a href="/news/pc/local/local.do?lscd=11&ref=pSiteMap">울산</a></li> <li><a href="/news/pc/local/local.do?lscd=50&ref=pSiteMap">전주</a></li> <li><a href="/news/pc/local/local.do?lscd=20&ref=pSiteMap">창원</a></li> <li><a href="/news/pc/local/local.do?lscd=60&ref=pSiteMap">대전</a></li> <li><a href="/news/pc/local/local.do?lscd=21&ref=pSiteMap">진주</a></li> <li><a href="/news/pc/local/local.do?lscd=70&ref=pSiteMap">청주</a></li> <li><a href="/news/pc/local/local.do?lscd=30&ref=pSiteMap">대구</a></li> <li><a href="/news/pc/local/local.do?lscd=71&ref=pSiteMap">충주</a></li> <li><a href="/news/pc/local/local.do?lscd=31&ref=pSiteMap">안동</a></li> <li><a href="/news/pc/local/local.do?lscd=80&ref=pSiteMap">춘천</a></li> <li><a href="/news/pc/local/local.do?lscd=32&ref=pSiteMap">포항</a></li> <li><a href="/news/pc/local/local.do?lscd=81&ref=pSiteMap">강릉</a></li> <li><a href="/news/pc/local/local.do?lscd=40&ref=pSiteMap">광주</a></li> <li><a href="/news/pc/local/local.do?lscd=82&ref=pSiteMap">원주</a></li> <li><a href="/news/pc/local/local.do?lscd=41&ref=pSiteMap">목포</a></li> <li><a href="/news/pc/local/local.do?lscd=90&ref=pSiteMap">제주</a></li> </ul> </div> </div> </div> <div class="common-menu shortcut-menu"> <div class="full-menu-links-wrapper"> <h3>바로가기</h3> <div class="full-menu-links-group"> <ul class="full-menu-links"> <li><a href="//mypage.kbs.co.kr">좋아요 클립</a></li> <li><a href="/news/pc/report/report.html?ref=pSiteMap">제보</a></li> <li><a href="/news/pc/breaking/breaking.html?ref=pSiteMap">속보</a></li> <li><a href="https://d.kbs.co.kr/" target="_blank">재난포털</a></li> <li><a href="/news/pc/news24/news24.html?ref=pSiteMap">ON AIR</a></li> <li><a href="/news/pc/newsArchive/newsArchive.html?ref=pSiteMap">뉴스 아카이브</a></li> </ul> </div> <div class="full-menu-links-group"> <h3><a href="/news/pc/notice/notice.html?ref=pSiteMap">공지·정정</a></h3> </div> </div> </div> </div> </div> <div class="footer-notice-wrapper" style="display: none;"> <div class="footer-notice"> <p class="notice-title">공지사항</p> <a class="notice-txt" href="/news/pc/popup/notice.html" target="_blank" aria-label="공지사항 링크">테스트</a> </div> </div> <script> $(function () { // $.get('https://pbbsapi.kbs.co.kr/board/v1/list?bbs_id=R2017-0164-03-513128&page=1&page_size=1', function (data) { // // "공지·정정"만 해당js 파일에서 렌더링하고 공지사항을 header에서 api 호출하여 랜더링함 // if (data.data[0] && data.data[0].title) { // $('.footer-inform-wrapper').css('display', 'block'); // $('.footer-inform-wrapper a').text(data.data[0].title); // } // }); }); </script> <div class="footer-util-menu-wrapper"> <div class="footer-util-menu"> <div class="about-kbs-menu"> <div class="footer-common-select"> <button type="button" class="footer-select-btn" aria-label="KBS 소개 메뉴 펼침 버튼"> <span class="btn-txt">KBS 소개</span> <span class="arrow"></span> </button> <ul class="common-select-links"> <li class="common-select-list"> <a href="https://about.kbs.co.kr/index.html?sname=kbs&stype=location" target="_blank" class="common-select-link" aria-label="주소/연락처 링크">주소/연락처</a> </li> <li class="common-select-list"> <a href="http://office.kbs.co.kr/susin/" target="_blank" class="common-select-link" aria-label="수신료 링크">수신료</a> </li> <li class="common-select-list"> <a href="https://about.kbs.co.kr/index.html?sname=recruit&stype=recruit" target="_blank" class="common-select-link" aria-label="채용 링크">채용</a> </li> <li class="common-select-list"> <a href="https://about.kbs.co.kr" target="_blank" class="common-select-link" aria-label="About KBS 링크">About KBS</a> </li> </ul> </div> <ul class="kbs-related-links"> <li class="kbs-related-list"> <a href="https://petitions.kbs.co.kr/" target="_blank" class="kbs-related-link" aria-label="시청자권익센터 링크">시청자권익센터</a> </li> <li class="kbs-related-list"> <a href="https://audit.kbs.co.kr/CyberAudit/" target="_blank" class="kbs-related-link" aria-label="사이버 감사실 링크">사이버 감사실</a> </li> <li class="kbs-related-list"> <a href="https://pwwwapi.kbs.co.kr/api/v1/introduction/advertisement" target="_blank" class="kbs-related-link" aria-label="광고 링크">광고</a> </li> <li class="kbs-related-list"> <a href="https://sso.kbs.co.kr/SSO/KBSWeb/information/PermissionKR20100223.aspx" target="_blank" class="kbs-related-link" aria-label="이용약관 링크">이용약관</a> </li> <li class="kbs-related-list"> <a href="https://sso.kbs.co.kr/SSO/KBSWeb/information/monitionKR.aspx" target="_blank" class="kbs-related-link" aria-label="법적고지 링크">법적고지</a> </li> <li class="kbs-related-list"> <a href="https://sso.kbs.co.kr/SSO/KBSWeb/information/PersonalPoliciesKR.aspx" target="_blank" class="kbs-related-link" aria-label="개인정보처리방침 링크">개인정보처리방침</a> </li> <li class="kbs-related-list"> <a href="https://about.kbs.co.kr/index.html?sname=kbs&stype=rule#none" target="_blank" class="kbs-related-link" aria-label="윤리강령 링크">윤리강령</a> </li> </ul> </div> <div class="nchannel-world-menu"> <div class="footer-common-select"> <button type="button" class="footer-select-btn" aria-label="KBS N 채널 사이트 메뉴 펼침 버튼"> <span class="btn-txt">KBS N 채널</span> <span class="arrow"></span> </button> <ul class="common-select-links"> <li class="common-select-list"> <a href="https://drama.kbs.co.kr/" target="_blank" class="nchannel-link common-select-link" aria-label="KBS Drama 링크">KBS Drama</a> </li> <li class="common-select-list"> <a href="http://www.kbsn.co.kr/index" target="_blank" class="common-select-link" aria-label="KBS W 링크">KBS W</a> </li> <li class="common-select-list"> <a href="http://www.kbsn.co.kr/index" target="_blank" class="common-select-link" aria-label="KBS Kids 링크">KBS Kids</a> </li> <li class="common-select-list"> <a href="http://www.kbsn.co.kr/nplay/index" target="_blank" class="common-select-link" aria-label="KBS N Sports 링크">KBS N Sports</a> </li> <li class="common-select-list"> <a href="http://www.kbsn.co.kr/index" target="_blank" class="common-select-link" aria-label="KBS Joy 링크">KBS Joy</a> </li> </ul> </div> <div class="footer-common-select"> <button type="button" class="footer-select-btn left-border-delete" aria-label="KBS WORLD 사이트 메뉴 펼침 버튼"> <span class="btn-txt">KBS WORLD</span> <span class="arrow"></span> </button> <ul class="common-select-links"> <li class="common-select-list"> <a href="https://english.kbs.co.kr/" target="_blank" class="common-select-link" aria-label="Global 링크">Global</a> </li> <li class="common-select-list"> <a href="https://world.kbs.co.kr" target="_blank" class="common-select-link" aria-label="KBS WORLD 링크">KBS WORLD</a> </li> </ul> </div> </div> </div> </div> <div class="footer-address-copyright-wrapper"> <div class="footer-address-copyright"> <address class="footer-address"> KBS / 07235 서울특별시 영등포구 여의공원로 13(여의도동) / 대표전화 02-781-1000 / 기사배열 책임자, 청소년보호책임자 : 정철웅 <br/> KBS뉴스 인터넷 서비스 / 서울특별시 마포구 매봉산로 45 KBS미디어센터 / 시청자상담실 02-781-1000 / 등록번호 서울 자00297 (2010년 6월 23일) </address> <p class="footer-copyright">Copyright ⓒ KBS. All rights reserved. 무단 전재, 재배포 및 이용(AI 학습 포함) 금지</p> </div> </div> <button type="button" class="top-btn" aria-label="맨위로 이동 버튼"></button> <button type="button" class="aside-toggle-button" aria-label="aside 토글 버튼"></button> <aside class="aside" style="display: none"> <ul class="aside-btns"> <li class="aside-btns-list aside-like"> <button type="button" class="like-btn common-btn" aria-label="좋아요 펼침 버튼"> <span class="like-icon"></span> <span class="common-btn-txt">0</span> <span class="arrow-icon"></span> </button> <ul class="like-menu open-menu"> <li class="like-menu-list open-menu-list"> <button class="like-menu-btn open-menu-btn" type="button" onclick="javascript:addRecommend('', '1')" aria-label="좋아요 버튼"> <span class="like-icon"></span> <span class="title">좋아요</span> </button> </li> <li class="like-menu-list open-menu-list"> <button class="like-menu-btn open-menu-btn" type="button" onclick="javascript:addRecommend('', '2')" aria-label="응원해요 버튼"> <span class="cheer-icon"></span> <span class="title">응원해요</span> </button> </li> <li class="like-menu-list open-menu-list"> <button class="like-menu-btn open-menu-btn" type="button" onclick="javascript:addRecommend('', '3')" aria-label="후속 원해요 버튼"> <span class="want-icon"></span> <span class="title">후속 원해요</span> </button> </li> </ul> </li> <li class="share-btn-wrapper aside-btns-list aside-share"> <button type="button" class="share-btn common-btn" aria-label="공유 버튼"> <span class="share-icon"></span> <span class="common-btn-txt">공유</span> </button> </li> <li class="aside-btns-list aside-copy"> <button type="button" class="copy-btn common-btn" onclick="printSection();" aria-label="인쇄 버튼"> <span class="copy-icon"></span> <span class="common-btn-txt">인쇄</span> </button> </li> <li class="txt-btn-wrapper aside-btns-list aside-txt"> <button type="button" class="txt-btn common-btn" aria-label="글꼴 버튼"> <div class="txt-icon-wrapper"> <span class="txt-icon normal"></span> </div> <span class="common-btn-txt">기본</span> <span class="arrow-icon"></span> </button> <ul class="txt-menu open-menu"> <li class="txt-menu-list open-menu-list"> <button class="txt-menu-btn large open-menu-btn" type="button" aria-label="글꼴 확대 버튼"> <div class="txt-icon-wrapper"> <span class="txt-icon large"></span> </div> <span class="title">확대</span> </button> </li> <li class="txt-menu-list open-menu-list"> <button class="txt-menu-btn normal open-menu-btn" type="button" aria-label="글꼴 기본 버튼"> <div class="txt-icon-wrapper"> <span class="txt-icon normal"></span> </div> <span class="title">기본</span> </button> </li> <li class="txt-menu-list open-menu-list"> <button class="txt-menu-btn small open-menu-btn" type="button" aria-label="글꼴 축소 버튼"> <div class="txt-icon-wrapper"> <span class="txt-icon small"></span> </div> <span class="title">축소</span> </button> </li> </ul> </li> <li class="dark-btn-wrapper aside-btns-list aside-dark"> <button type="button" class="dark-btn common-btn" aria-label="다크모드 버튼"> <span class="dark-icon"></span> <span class="common-btn-txt">다크<br />모드</span> </button> </li> </ul> </aside> <script type="text/javascript"> var textSize = 'normal'; var darkMode = 'false'; var isDarkMode = window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches; $(function () { if (navigator.cookieEnabled) { if (typeof localStorage !== "undefined" && localStorage.getItem("text-size") !== null) { textSize = localStorage.getItem("text-size"); } if (typeof localStorage !== "undefined" && localStorage.getItem("dark-mode") !== null) { darkMode = localStorage.getItem("dark-mode"); } } var $txtIcon = document.querySelector(".aside-btns-list .txt-btn .txt-icon"); var $btnTxt = document.querySelector(".aside-btns-list .txt-btn .common-btn-txt"); var $menu = document.querySelector(".aside-btns-list .txt-menu"); if (textSize == 'large'){ $("body").find("*").not(".player-app, .player-app *, #header, #header *, #footer, #footer *, .aisde, .aside *, .header-live-wrapper, .header-live-wrapper *").each(function () { $(this).css("font-size", ""); var size = Number($(this).css("font-size").replace("px", "")) + 1; if (size > 1) { $(this).css("font-size", size + "px"); } }); $txtIcon.className = "txt-icon large"; $btnTxt.innerText = "확대"; $menu.classList.remove("on"); } else if (textSize == 'small'){ $("body").find("*").not(".player-app, .player-app *, #header, #header *, #footer, #footer *, .aisde, .aside *, .header-live-wrapper, .header-live-wrapper *").each(function () { $(this).css("font-size", ""); var size = Number($(this).css("font-size").replace("px", "")) - 1; $(this).css("font-size", size + "px"); }); $txtIcon.className = "txt-icon small"; $btnTxt.innerText = "축소"; $menu.classList.remove("on"); } else { $("body").find("*").not(".player-app, .player-app *, #header, #header *, #footer, #footer *, .aisde, .aside *, .header-live-wrapper, .header-live-wrapper *").each(function () { $(this).css("font-size", ""); }); $txtIcon.className = "txt-icon normal"; $btnTxt.innerText = "기본"; $menu.classList.remove("on"); } var _$btnTxt = document.querySelector(".dark-btn .common-btn-txt"); if (_$btnTxt) { if (darkMode == 'true') { _$btnTxt.innerHTML = "\uB77C\uC774\uD2B8<br />\uBAA8\uB4DC"; } else if (darkMode == 'false') { _$btnTxt.innerHTML = "\uB2E4\uD06C<br />\uBAA8\uB4DC"; } else { if (isDarkMode) { _$btnTxt.innerHTML = "\uB77C\uC774\uD2B8<br />\uBAA8\uB4DC"; } else { _$btnTxt.innerHTML = "\uB2E4\uD06C<br />\uBAA8\uB4DC"; } } } }) window.addEventListener('load', function() { window.scrollBy(0, -1); }); </script> <div class="share-menu"> <div class="title-wrapper"> <p class="title">공유하기</p> <button type="button" class="close-btn"></button> </div> <div class="share-links-copy"> <ul class="share-links"> <li class="share-links-list"> <button type="button" class="share-link share-facebook"> <span class="share-icon facebook-icon"></span> <span class="txt">페이스북</span> </button> </li> <li class="share-links-list"> <button type="button" class="share-link share-twitter"> <span class="share-icon twitter-icon"></span> <span class="txt">트위터</span> </button> </li> <li class="share-links-list"> <button type="button" class="share-link share-kakao"> <span class="share-icon kakao-icon"></span> <span class="txt">카카오톡</span> </button> </li> <li class="share-links-list"> <button type="button" class="share-link share-kakao-story"> <span class="share-icon story-icon"></span> <span class="txt">카카오스토리</span> </button> </li> <li class="share-links-list"> <button type="button" class="share-link share-naver"> <span class="share-icon blog-icon"></span> <span class="txt">네이버블로그</span> </button> </li> <li class="share-links-list"> <button type="button" class="share-link share-naver-band"> <span class="share-icon band-icon"></span> <span class="txt">네이버밴드</span> </button> </li> </ul> <div class="copy-input"> <input readonly type="text" class="input" value=""/> <button type="button" class="copy-btn">링크복사</button> </div> </div> </div> <script type="text/javascript"> var currentUrl = window.location.href; var encodedCurrentUrl = encodeURIComponent(currentUrl); $(function () { Kakao.init('d57b7eca9db04c5ccd91e4d309ce0288'); $('.share-links-copy .copy-input input').val(currentUrl); $('.share-links-copy .share-facebook').off('click').on('click', function() { var shareUrl = 'https://www.facebook.com/sharer/sharer.php?u=' + encodedCurrentUrl; openPopup(shareUrl); }); $('.share-links-copy .share-twitter').off('click').on('click', function() { var shareUrl = "https://twitter.com/intent/tweet?url=" + encodedCurrentUrl; openPopup(shareUrl); }); $('.share-links-copy .share-kakao').off('click').on('click', function() { var shareDesc = document.getElementById('facebook_desc').getAttribute('content'); var shareImg = document.getElementById('facebook_img').getAttribute('content'); var mShareUrl = currentUrl; Kakao.Link.sendDefault({ objectType:"feed" , content : { title: "KBS News" // 콘텐츠의 타이틀 , description: shareDesc // 콘텐츠 상세설명 , imageUrl: shareImg // 썸네일 이미지 , link : { webUrl:currentUrl, // 모바일 카카오톡에서 사용하는 웹 링크 URL } } , buttons: [ { title: '웹으로 이동', link: { mobileWebUrl: mShareUrl, webUrl: currentUrl }, }, ], }); //sendDefualt }); $('.share-links-copy .share-kakao-story').off('click').on('click', function() { var origin = currentUrl.match(/^(https?:\/\/[^/]+)/)[1]; var shareUrl = "https://story.kakao.com/s/share?url=" + currentUrl + "&kakao_agent=sdk%2F1.43.1%20os%2Fjavascript%20sdk_type%2Fjavascript%20lang%2Fko-KR%20device%2FWin32%20origin%2F" + origin + "&app_key=d57b7eca9db04c5ccd91e4d309ce0288"; openPopup(shareUrl); }); $('.share-links-copy .share-naver').off('click').on('click', function() { var shareUrl = 'http://blog.naver.com/openapi/share?url=' + encodedCurrentUrl + '&title='; openPopup(shareUrl); }); $('.share-links-copy .share-naver-band').off('click').on('click', function() { var shareUrl = "https://band.us/plugin/share?body=" + encodedCurrentUrl + "&route=" + encodedCurrentUrl; openPopup(shareUrl); }); $('.share-links-copy .copy-input button').off('click').on('click', function() { copyToClipboard(currentUrl); }); }) function openPopup(url) { var windowFeatures = 'width=600,height=400,menubar=no,location=no,resizable=yes,scrollbars=no,status=no'; window.open(url, '_blank', windowFeatures); } function copyToClipboard(text) { var textarea = document.createElement("textarea"); textarea.textContent = text; textarea.style.position = "fixed"; // Prevent scrolling to bottom of page in MS Edge. document.body.appendChild(textarea); textarea.select(); try { document.execCommand("copy") alert('링크가 복사되었습니다.'); return true; // Security exception may be thrown by some browsers. } catch (ex) { console.warn("Copy to clipboard failed.", ex); return false; } finally { document.body.removeChild(textarea); } } </script> </footer> <div class="dim"></div> <!-- 메인페이지 정보 추가 : SEO --> <script type="application/ld+json"> { "@context": "https://schema.org", "@id": "https://news.kbs.co.kr", "@type": "WebSite", "url": "https://news.kbs.co.kr", "name": "KBS 뉴스", "potentialAction": { "@type": "SearchAction", "target": { "@type": "EntryPoint", "urlTemplate": "https://reco.kbs.co.kr/v2/search?target=newstotal&keyword={keyword}&page=1&page_size=10&sort_option=score&searchfield=all" }, "query-input": "required name=keyword" }, "sameAs": [ "http://news.kbs.co.kr", "https://mn.kbs.co.kr", "https://www.youtube.com/user/NewsKBS", "https://www.facebook.com/kbsnews", "https://www.twitter.com/KBSnews", "https://www.instagram.com/kbsnews", "https://tv.naver.com/kbsnews", "https://newsstand.naver.com/?list=&pcode=056", "https://media.naver.com/press/056", "https://v.daum.net/channel/327/home", "https://pf.kakao.com/_Judxfu", "https://news.google.com/publications/CAAiEEt8v3JhrtW77h8qyLmhZ_EqFAgKIhBLfL9yYa7Vu-4fKsi5oWfx?ceid=KR:ko&oc=3", "https://play.google.com/store/apps/details?id=kr.co.kbs.news301&hl=en-KR", "https://apps.apple.com/kr/app/id376746898" ] } </script> <script type="application/ld+json"> { "@context": "https://schema.org", "@id": "https://news.kbs.co.kr/common/main.html", "@type": "WebPage", "url": "https://news.kbs.co.kr/common/main.html", "name": "메인 | KBS 뉴스" } </script> <script type="application/ld+json"> { "@context": "https://schema.org", "@type": "ItemList", "itemListElement": [ { "@type": "SiteNavigationElement", "position": 1, "name": "뉴스9", "description": "KBS 9시 뉴스", "url": "https://news.kbs.co.kr/vod/program.do?bcd=0001" }, { "@type": "SiteNavigationElement", "position": 2, "name": "최신 뉴스", "description": "KBS의 따끈따끈한 최근 뉴스 서비스", "url": "https://news.kbs.co.kr/news/list.html" }, { "@type": "SiteNavigationElement", "position": 3, "name": "라이브", "description": "인터넷 전용 뉴스와 전용 프로그램을 통해 빠르고 다양한 소식으로 365일, 24시간 시청자 여러분을 찾아갑니다.", "url": "https://news.kbs.co.kr/news/news24.do" }, { "@type": "SiteNavigationElement", "position": 4, "name": "제보", "description": "KBS에서는 여러분의 소중한 제보를 받고 있습니다.", "url": "https://news.kbs.co.kr/news/pc/report/report.html" } ] } </script> </body> </html>