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%2Finternasional%2F20261009115901-110-1413465%2Fkabut-asap-memburuk-sekolah-di-kuala-lumpur-diliburkan&backURL=https%3A%2F%2Fwww.cnnindonesia.com%2Finternasional%2F20261009115901-110-1413465%2Fkabut-asap-memburuk-sekolah-di-kuala-lumpur-diliburkan`; $('#dropdown').append(` Daftar Masuk `); } } .verticalThumbnail { width: 100%; top: 0; left: 0; bottom: 0; object-fit: cover; transition: opacity 0.3s ease-in-out; } .video-detail-panel-content { opacity: 0; transform: translateY(50px); transition: transform 500ms cubic-bezier(0.22, 1, 0.36, 1), opacity 500ms cubic-bezier(0.22, 1, 0.36, 1); will-change: transform, opacity; backface-visibility: hidden; } .video-detail-panel-content.is-shown { opacity: 1; transform: translateY(0); } 25 VIDEO Kabut Asap Memburuk, Sekolah di Kuala Lumpur Diliburkan REUTERS CNN Indonesia Jumat, 09 Okt 2026 21:30 WIB Kualitas udara yang memburuk akibat karhutla di Indonesia membuat Kementerian Pendidikan Malaysia meliburkan sekolah di sejumlah wilayah pada Jumat (9/10).Tercatat sebanyak 37 wilayah di Malaysia memiliki Indeks Pencemar Udara (API) dalam kategori tidak sehat.Memburuknya kualitas udara di wilayah tersebut diduga dipicu oleh karhutla di Indonesia yang hingga kini masih dalam proses pemadaman.Menanggapi kondisi ini, PM Anwar Ibrahim telah berkoordinasi dengan Presiden Prabowo Subianto dan mendorong pertemuan menteri ASEAN untuk menangani kabut asap lintas batas.
Judul Berita
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 →
Bentrokan di Penjara Meksiko, 10 Tewas 16 Terluka
Bentrokan di sebuah penjara di negara bagian Sinaloa, Meksiko, menewaskan 10 orang dan melukai 16 narapidana pada Kamis (8/10).
Hasil China Open: Gilas Unggulan Ketiga, Aldila/Routliffe ke Semifinal
Aldila Sutjiadi dan Erin Hope Routliffe melaju ke semifinal China Open 2026 setelah mengalahkan Hsieh Su-Wei/Jelena Ostapenko.
Nestapa Masyarakat Palangka Raya Tercekik Asap Karhutla
Kebakaran hutan di Palangka Raya terus berlanjut, menyebabkan udara menguning dan mengganggu aktivitas warga. Bantuan logistik terhambat, 86 hotspot terdeteksi.
Detik-detik Penggerebekan Sarang Narkoba di Jakarta Barat
Sebanyak 24 orang ditangkap dalam penggerebekan sarang narkoba di Kampung Ambon dan Kampung Boncos, Daan Mogot, Jakarta Barat, pada Jumat (9/10) pagi.