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%2F20261010131048-400-1413842%2Fvideo-motogp-memasuki-sesi-kualifikasi-dan-sprint-race&backURL=https%3A%2F%2Fwww.cnnindonesia.com%2Ftv%2F20261010131048-400-1413842%2Fvideo-motogp-memasuki-sesi-kualifikasi-dan-sprint-race`; $('#dropdown').append(` Daftar Masuk `); } } CNN TV Live Program Anchor Home CNN Indonesia Today Detail VIDEO: MotoGP Memasuki Sesi Kualifikasi Dan Sprint Race CNNTV | CNN Indonesia Sabtu, 10 Okt 2026 13:15 WIB var article = { idnews : 1413842, idkanal : 400 } var baseurl = 'https://www.cnnindonesia.com/tv/20261010131048-400-1413842/video-motogp-memasuki-sesi-kualifikasi-dan-sprint-race'; getScript("https://cdn.detik.net.id/libs/sharebox/js/shareBox.js?v=2026101014", 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 Sabtu, 10 Oktober 2026, Pertamina Grand Prix of Indonesia di Pertamina Mandalika International Circuit, Lombok, Nusa Tenggara Barat, ajang balap MotoGP akan memasuki sesi kualifikasi dan juga sprint race.
VIDEO: MotoGP Memasuki Sesi Kualifikasi Dan Sprint Race
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 →
Wagub Gorontalo Buka Peluang MBG Prasmanan untuk Siswa
Wakil Gubernur (Wagub) Gorontalo Idah Syahidah Rusli Habibie membuka peluang penerapan sistem prasmanan dalam program Makan Bergizi Gratis (MBG) di sekolah.
Tol Cibubur Arah Jakarta Macet Imbas Truk Tabrak Pembatas Jalan
Tol Cibubur arah Jakarta macet imbas kecelakaan truk yang menabrak pembatas jalan diduga akibat rem blong sekitar pukul 11.30 WIB.
FOTO: Senyum Raul Fernandez usai Rebut Pole Pertamina MotoGP Mandalika
Raul Fernandez berhak merayakan keberhasilan raih pole position pertama di MotoGP Mandalika Pertamina Grand Prix of Indonesia 2026, Sabtu (10/10).
FOTO: Dampak Banjir Bandang Ekstrem di Ibu Kota Chili
Hujan lebat memicu tanah longsor dan banjir bandang di distrik Las Condes, Santiago, Chili, Jumat (9/10). Lebih dari 1.000 orang dievakuasi.