Search History //search const searchBox = document.querySelector('.search'); const searchBtn = document.querySelector('.search-btn'); const searchBtnclose = document.querySelector('.search-close') const overlay = document.querySelector('.overlay') const htmlTag = document.documentElement; const searchInput = document.getElementById('searchinput'); const searchList = document.querySelector('.search-list'); const searchSuggest = document.querySelector('.search-suggestion'); function disableScroll() { scrollTop = window.pageYOffset || document.documentElement.scrollTop; scrollLeft = window.pageXOffset || document.documentElement.scrollLeft; window.onscroll = function () { window.scrollTo(scrollLeft, scrollTop); }; } function enableScroll() { window.onscroll = function () {}; } searchBtn.addEventListener("click", (e) => { searchBox.classList.add('search__active'); overlay.classList.remove('hidden'); htmlTag.classList.add('overflow-hidden'); disableScroll(); _pt(e.currentTarget); }) searchBtnclose.addEventListener("click", (e) => { searchBox.classList.remove('search__active'); overlay.classList.add('hidden'); htmlTag.classList.remove('overflow-hidden'); enableScroll(); _pt(e.currentTarget); }) overlay.addEventListener("click", (e) => { if (overlay.classList.contains("hidden")) { return } searchBox.classList.remove('search__active'); overlay.classList.add('hidden'); htmlTag.classList.remove('overflow-hidden'); enableScroll(); }) // Debounce utility function useDebounce(callback, delay) { let timer; return function (...args) { clearTimeout(timer); timer = setTimeout(() => callback(...args), delay); }; } // DOM elements const suggestionsContainer = document.getElementById('suggestions'); // Fetch suggestions from Google's Suggest API async function fetchSuggestions(query) { try { const response = await fetch( `https://suggestqueries.google.com/complete/search?client=firefox&q=${encodeURIComponent(query)}` ); const data = await response.json(); return data[1]; // Suggestions array } catch (error) { console.error('Error fetching suggestions:', error); return []; } } function highlightKeyword(keyword, str) { const regex = new RegExp(`(${keyword})`, "gi"); // Case-insensitive match return str.replace(regex, "$1"); } // Render suggestions function renderSuggestions(suggestions, query) { suggestionsContainer.innerHTML = ''; // Clear previous suggestions if (suggestions.length === 0) { return; } let suggestionList = "" suggestions.forEach((suggestion) => { suggestionList += ` ${highlightKeyword(query, suggestion)} ` }); suggestionsContainer.innerHTML = suggestionList } function fetchSuggestionsJSONP(query, callback) { const script = document.createElement('script'); const callbackName = `jsonpCallback_${Date.now()}`; script.src = `https://suggestqueries.google.com/complete/search?client=chrome&q=${encodeURIComponent(query)}&callback=${callbackName}`; window[callbackName] = function (data) { callback(data[1], query); // Pass suggestions to callback delete window[callbackName]; // Clean up document.body.removeChild(script); // Remove script tag }; script.onerror = function () { console.error('Error fetching JSONP suggestions'); delete window[callbackName]; document.body.removeChild(script); }; document.body.appendChild(script); } // Debounced input handler const handleInput = useDebounce(async (event) => { const query = event.target.value.trim(); event.preventDefault(); if (query.length === 0) { searchList.classList.remove('hidden'); searchSuggest.classList.add('hidden'); return; } else { searchList.classList.add('hidden'); searchSuggest.classList.remove('hidden'); } const safeQuery = encodeURIComponent(query.toLowerCase()); fetchSuggestionsJSONP(safeQuery, (suggestions, query) => { renderSuggestions(suggestions, query); }); }, 200); // debounce delay value searchInput.addEventListener('keyup', handleInput); function setSearchKeywords(keywords) { document.cookie = `lastSearchKeyword=${encodeURIComponent(JSON.stringify(keywords))}; path=/`; } function getSearchKeywords() { const cookies = document.cookie.split('; '); for (let cookie of cookies) { let [name, value] = cookie.split('='); if (name === 'lastSearchKeyword') { return JSON.parse(decodeURIComponent(value)); } } return []; } let searchHistoryCookie = getSearchKeywords() if (!Array.isArray(searchHistoryCookie)) { searchHistoryCookie = [] } let searchHistoryList = ""; if (searchHistoryCookie.length > 0) { for (let i = 0; i ${searchHistoryCookie[i]} `; } } const elLastSearch = document.getElementById("cnnSearchHistory"); elLastSearch.innerHTML = searchHistoryList; Loading... $(document).ready(function() { detikConnectAutoLogin('10027', false, onLoginClient); }); function onLoginClient (data){ $('.loader').remove() const dcUrl = 'https://connect.detik.com/dashboard/'; document.dispatchEvent(new CustomEvent('login:client', { detail: data })); if (data.is_login) { $('#connectDetikAvatar').css({'background-image': `url(${data.avatar})`, 'background-size': '100% auto'}); $('#dropdown').append(` ${data.first_name} ${data.last_name} Keluar `); iFrameResize({ log: false }, '#alloCardIframe') } else { const loginUrl = `https://connect.detik.com/oauth/authorize?clientId=10027&redirectUrl=https%3A%2F%2Fwww.cnnindonesia.com%2Fauthorize%3Fu%3Dhttps%3A%2F%2Fwww.cnnindonesia.com%2Ftv%2F20261013131705-402-1414763%2Fvideo-indonesia-bersiap-di-cop31-dan-pendanaan-iklim&backURL=https%3A%2F%2Fwww.cnnindonesia.com%2Ftv%2F20261013131705-402-1414763%2Fvideo-indonesia-bersiap-di-cop31-dan-pendanaan-iklim`; $('#dropdown').append(` Daftar Masuk `); } } CNN TV Live Program Anchor Home CNN Indonesia Business Detail VIDEO: Indonesia Bersiap di COP31 dan Pendanaan Iklim CNN Indonesia TV | CNN Indonesia Selasa, 13 Okt 2026 16:00 WIB var article = { idnews : 1414763, idkanal : 402 } var baseurl = 'https://www.cnnindonesia.com/tv/20261013131705-402-1414763/video-indonesia-bersiap-di-cop31-dan-pendanaan-iklim'; getScript("https://cdn.detik.net.id/libs/sharebox/js/shareBox.js?v=2026101317", function(){ waitUntil( function () { return typeof shareBox === 'object' && typeof shareBox.run === 'function'; }, // kondisi function () { shareBox.run($('.share-top-new')); shareBox.countComment($('.sh-komentar')); }, // aksi 10000 // max 10 detik ); }) Bagikan: URL berhasil disalin Jakarta, CNN Indonesia -- Indonesia siap menghadiri Conference of the Parties (COP31) atau konferensi iklim tahunan Perserikatan Bangsa-Bangsa di Antalya, Turki, pada 9-20 November 2026. Dalam persiapan delegasi Indonesia menuju COP31, Wakil Menteri Perencanaan Pembangunan Nasional sekaligus Wakil Kepala Bappenas, Febrian Alphyanto Ruddyard, menyampaikan bahwa Indonesia akan memaksimalkan Paviliun Indonesia sebagai wadah pendanaan iklim yang siap menerima investasi asing bagi Indonesia.
VIDEO: Indonesia Bersiap di COP31 dan Pendanaan Iklim
Artikel ini disajikan kembali secara informatif oleh Uhuy News dari jaringan kantor berita CNN Indonesia. Hak kekayaan intelektual naskah dan materi foto sepenuhnya merupakan milik penerbit resmi terkait.
Warta Terkait Lainnya
Lihat Semua Berita →
Hujan Meteor Orionid Hiasi Langit, Ini Jadwal Terbaik Menyaksikannya
Hujan meteor Orionid akan menghiasi langit dari 2 Oktober hingga 7 November, dengan puncaknya pada 21-22 Oktober.
Mike Flanagan Bocorkan Rencana Garap Carrie Season 2
Mike Flanagan selaku kreator blak-blakan mengenai ending season 1 dan rencana Carrie season 2.
7 Ciri-ciri Kamu Orang yang Mudah Terpengaruh Orang Lain
Jika tiap keputusan dan cara menilai diri sendiri selalu bergantung pada penilaian orang lain, maka bisa jadi kamu mudah terpengaruh.
Pemkab Situbondo Hidupkan Potensi Ekonomi Jalur Anyer-Panarukan
Festival Anyer-Panarukan menandai posisi Situbondo sebaga penggerak utama dalam membangkitkan potensi ekonomi berbasis sejarah di Indonesia.