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%2F20261009185442-400-1413703%2Fvideo-sejumlah-pembalap-mulai-latihan-bebas-di-sirkuit-mandala&backURL=https%3A%2F%2Fwww.cnnindonesia.com%2Ftv%2F20261009185442-400-1413703%2Fvideo-sejumlah-pembalap-mulai-latihan-bebas-di-sirkuit-mandala`; $('#dropdown').append(` Daftar Masuk `); } } CNN TV Live Program Anchor Home CNN Indonesia Today Detail VIDEO: Sejumlah Pembalap Mulai Latihan Bebas di Sirkuit Mandala CNNTV | CNN Indonesia Jumat, 09 Okt 2026 20:12 WIB var article = { idnews : 1413703, idkanal : 400 } var baseurl = 'https://www.cnnindonesia.com/tv/20261009185442-400-1413703/video-sejumlah-pembalap-mulai-latihan-bebas-di-sirkuit-mandala'; getScript("https://cdn.detik.net.id/libs/sharebox/js/shareBox.js?v=2026100920", 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 -- Memasuki hari pertama penyelenggaraan Pertamina Grand Prix of Indonesia, suasana Sirkuit Mandalika sejak Jumat pagi mulai didatangi sejumlah tim balap dan penonton.Para pembalap juga sudah berdatangan ke sirkuit untuk mengikuti sesi practice dan free practice pertama pada hari ini. Berikut laporan Alby Pratama dan Fajar Bolipia dari Sirkuit Mandalika.
VIDEO: Sejumlah Pembalap Mulai Latihan Bebas di Sirkuit Mandala
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 →
VIDEO: Singapura Dikepung Asap Jelang Balap F1
Kabut Asap Kepung Singapura Jelang Formula One, Amazon Brasil Dilanda Gelombang Panas
Raup Laba Rp2,4 T, Bulog Mau Bangun Pabrik Karung
Perum Bulog berencana membangun pabrik karung plastik usai mencatatkan kinerja keuangan positif dengan membukukan laba bersih Rp2,4 triliun per September 2026.
Pantauan Kualitas Udara Asia Tenggara Memburuk Akibat Karhutla RI
Indeks kualitas udara di sejumlah negara Asia Tenggara terus memburuk akibat kabut asap karhutla pada Jumat (9/10).
Versi TNI: Letkol A Sewakan Rumdin, Disalahgunakan Jadi Markas Judol
Kapendam Jaya Letkol Arh Noor Iskak mengungkap dugaan penyewaan rumah dinas TNI kepada warga sipil dan disalahgunakan untuk judi online.