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%2F20261011174800-407-1414166%2Fvideo-laporan-terkini-pertamina-grand-prix-of-indonesia-2026&backURL=https%3A%2F%2Fwww.cnnindonesia.com%2Ftv%2F20261011174800-407-1414166%2Fvideo-laporan-terkini-pertamina-grand-prix-of-indonesia-2026`; $('#dropdown').append(` Daftar Masuk `); } } CNN TV Live Program Anchor Home CNN Indonesia Newsroom Detail VIDEO: Laporan Terkini Pertamina Grand Prix of Indonesia 2026 CNN Indonesia TV | CNN Indonesia Minggu, 11 Okt 2026 18:01 WIB var article = { idnews : 1414166, idkanal : 407 } var baseurl = 'https://www.cnnindonesia.com/tv/20261011174800-407-1414166/video-laporan-terkini-pertamina-grand-prix-of-indonesia-2026'; getScript("https://cdn.detik.net.id/libs/sharebox/js/shareBox.js?v=2026101118", 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 -- Beberapa saat yang lalu, MotoGP Mandalika baru saja selesai. Lalu, bagaimana jalannya kompetisi tersebut? Kita sudah terhubung dengan Anchor CNN Indonesia, Alby Pratama, di Mandalika, Lombok Tengah
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 →
Bullying di Asrama Telkom University, Satu Mahasiswa Disanksi Drop Out
Telkom University menjatuhkan sanksi berat dan sedang kepada dua mahasiswa terkait dugaan bullying di asrama. Satu mahasiswa dikeluarkan.
FOTO: Momen Prabowo Sambut Kunjungan Presiden Mesir di Istana Negara
Presiden RI Prabowo Subianto menerima kunjungan kenegaraan Presiden Mesir Abdel Fattah el-Sisi di Istana Merdeka, Jakarta, Minggu (11/10).
Buntut Pesta Sabu, 120 Napi Rutan Depok Dipindah ke Nusakambangan
Sebanyak 120 orang warga binaan dipindahkan dari Rutan Depok ke Lapas Nusakambangan buntut kasus dugaan pesta narkotika jenis sabu di dalam rutan Depok.
Arab Saudi Perpanjang Penutupan Bandara Riyadh Imbas Serangan Rudal
Arab Saudi memperpanjang penutupan Bandara Internasional King Khalid di Riyadh, setelah serangan rudal yang diduga dilancarkan kelompok Houthi, Sabtu (10/10).