<!DOCTYPE html>
<html lang="id">

<head>
    <meta charset="utf-8" />
    <meta name="renderer" content="webkit" />
    <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" />
    <meta name="viewport" content="width=device-width, initial-scale=1" />
    
    <!-- DNS预解析和资源预加载 -->
    <link rel="dns-prefetch" href="//fonts.googleapis.com">
    <link rel="preconnect" href="" crossorigin>
    <link rel="preload" href="/t23_id/resource/js/jquery-1.9.1.min.js" as="script">
    <link rel="preload" href="/t23_id/resource/js/jquery.lazyload.min.js" as="script">
    
    <title>OLXTOTO - Situs Togel Toto Dan Bandar Togel Online Terpercaya #1</title>
    <meta name="description" content="olxtoto situs togel toto dan bandar togel online terpercaya yang menawarkan berbagai pengalaman bermain terbaik dan juga layanan 24jam nonstop." />
    <meta name="keywords" content="olxtoto,toto togel, situs togel,togel online,bandar togel terpercaya" />
    <link rel="shortcut icon" href="" type="image/x-icon"><!-- 关键CSS内联以防止渲染阻塞 -->
    <style>
        /* 关键CSS - 页面基础结构 */
        .main { display: block; width: 100%; }
        .flex-between { display: flex; justify-content: space-between; }
        .live-content { width: 100%; }
        .live-list { flex: 1; }
        .riqi { margin-bottom: 20px; }
        .riqi-label { font-weight: bold; color: #333; }
        
        /* 防止布局位移 */
        body { margin: 0; padding: 0; }
        .header, .footer { min-height: 60px; }
        
        /* 比赛列表优化 */
        .listcontent { 
            list-style: none; 
            margin: 0; 
            padding: 0; 
            min-height: 200px;
            contain: layout;
        }
        .item { 
            display: flex; 
            align-items: center; 
            padding: 10px; 
            border-bottom: 1px solid #eee;
            min-height: 80px;
        }
        .team-logo { 
            width: 32px; 
            height: 32px; 
            object-fit: contain;
            aspect-ratio: 1;
        }
        .zb-area_btn { 
            min-height: 44px; 
            will-change: opacity;
        }
        
        /* 性能优化 */
        img[loading="lazy"] { content-visibility: auto; }
        .lazy { background-color: #f5f5f5; }
    </style>

    <!-- 非关键CSS异步加载 -->
    <link rel="preload" href="/t23_id/resource/css/main.css" as="style" onload="this.onload=null;this.rel='stylesheet'">
    <link rel="preload" href="/t23_id/resource/css/swiper.min.css" as="style" onload="this.onload=null;this.rel='stylesheet'">
    <noscript>
        <link href="/t23_id/resource/css/main.css" rel="stylesheet" type="text/css" />
        <link href="/t23_id/resource/css/swiper.min.css" rel="stylesheet" type="text/css" />
    </noscript>
</head>

<body>
    <!-- adSwitch Start-->
<script type="text/javascript" src="/common/jquery.min.js"></script>
<link href="/common/adSwitch.css" rel="stylesheet" media="screen" type="text/css">
<div class="container swiper" id="adSwitch">
<div class="swiper-wrapper">

</div>
<div class="swiper-pagination"></div>
</div>
<script type="text/javascript" src="/common/adSwitch.js"></script>
<!-- adSwitch End-->

<header class="header">
    <nav class="nav">
        <ul>
            <li> <small class="nav-text"><a href="/" title="Beranda">Beranda</a></small></li><li><small class="nav-text"><a id="column" data-id="1" href="/live/sepak/"
                        title="Sepak bola" target="_self">Sepak bola</a></small></li><li><small class="nav-text"><a id="column" data-id="2" href="/live/basket/"
                        title="Bola basket" target="_self">Bola basket</a></small></li><li><small class="nav-text"><a id="column" data-id="3" href="/result/"
                        title="Hasil pertandingan" target="_self">Hasil pertandingan</a></small></li><li><small class="nav-text"><a id="column" data-id="4" href="/zt/"
                        title="Pemilihan Topik" target="_self">Pemilihan Topik</a></small></li><li><small class="nav-text"><a id="column" data-id="5" href="/news/"
                        title="Berita Terkini" target="_self">Berita Terkini</a></small></li><li><small class="nav-text"><a id="column" data-id="6" href="/channel/"
                        title="Saluran TV" target="_self">Saluran TV</a></small></li><li><small class="nav-text"><a id="column" data-id="7" href="/data/"
                        title="Pangkalan data" target="_self">Pangkalan data</a></small></li><li><small class="nav-text"><a id="column" data-id="8" href="/video/"
                        title="Rekaman pertandingan" target="_self">Rekaman pertandingan</a></small></li></ul>
    </nav>
</header>
<footer class="footer">
    <div class="m-width">
        <div class="site-nav">
            <div>Navigasi Liga：</div>
            <ul><li><a href="/live/fifaworldcupqualificationuefa/" target="_blank">Kualifikasi Piala Dunia （ UEFA )</a></li><li><a href="/live/engpremierleague/" target="_blank">Liga Utama Inggris</a></li><li><a href="/live/itaseriea/" target="_blank">Serie A</a></li><li><a href="/live/spalaliga/" target="_blank">La Liga</a></li><li><a href="/live/gerbundesliga/" target="_blank">Fußball-Bundesliga</a></li><li><a href="/live/fraligue1/" target="_blank">Ligue 1</a></li><li><a href="/live/csl/" target="_blank">Liga Super Tiongkok</a></li><li><a href="/live/jpnj1/" target="_blank">Liga J1 Jepang</a></li><li><a href="/live/jpnj2/" target="_blank">J2 League Jepang</a></li><li><a href="/live/kork1/" target="_blank">K League 1</a></li><li><a href="/live/kork2/" target="_blank">K League 2</a></li><li><a href="/live/ausaleague/" target="_blank">A-League Australia</a></li><li><a href="/live/idnliga1/" target="_blank">Indonesian Liga 1</a></li><li><a href="/live/nba/" target="_blank">Asosiasi Basket Nasional</a></li><li><a href="/live/cba/" target="_blank">Asosiasi Bola Basket Tiongkok</a></li></ul>
        </div>

    </div>
</footer>
    <main class="main">
        <div class="flex-between live-content">
            <div class="live-list">
                <div>
                    <div class="riqi">
                        <p><span class="riqi-label"><span>Siaran Langsung Pertandingan</p>
                    </div>
<ul id="match_wrapper" class="listcontent">

</ul>
<p class="zb-area_btn load_more" style="width: 100%; 
        border-radius: 5px;
        text-align: center;
        padding: .4rem;
        cursor: pointer;
        border: solid 1px #f6f6f6;
        color: #000;
        background: #fff;box-sizing: border-box;margin-top: 10px;display: none;" href="javascript:void(0);">tampilkan
    lebih banyak pertandigan</p>
<script>

    document.addEventListener('DOMContentLoaded', function () {
        // 仅需 DOM 结构加载完成时执行（无需等待图片等资源）
        console.log('DOM 加载完成');

        // 示例操作：快速初始化交互功能
        setupDropdownMenu();
    });
    const setupDropdownMenu = () => {
        let controller = new AbortController();
        let loading = false;

        const tabs = document.getElementById("match_filter");
        const wrapper = document.getElementById("match_wrapper");
        const data = [];

        /**缓存 */
        const cache = new Map();

        /**
         * 更新方法
         * @param { AbortController } controller 控制器
         * @param { Record<string,unknown>[] } data 数据
         * @param { number } end 长度
         */
        const update = async (controller, data, end) => {
            console.log(controller, data, end, 'controller, data, end')
            loading = true;
            console.time("update");
            await new Promise((resolve) => window.requestAnimationFrame(resolve));

            const render = async (data) => {
                for (let i = 0; i < data.length; i++) {
                    const $item = data[i];
                    const $key = `${$item.sportId}_${$item.id}`;
                    const $item_el = (() => {
                        if (cache.has($key)) {
                            return cache.get($key);
                        } else {
                            /**@type {HTMLLIElement} */
                            const $item_el = new DOMParser().parseFromString(`
                            <li class="item status-2">
                                <div class="time">
                                    <div class="live-time">${String($item.matchTs.getHours()).padStart(2, "0")}:${String($item.matchTs.getMinutes()).padStart(2, "0")}</div>
                                    <span>${String($item.matchTs.getMonth() + 1).padStart(2, "0")}-${String($item.matchTs.getDate()).padStart(2, "0")}</span>
                                </div>
                                <div class="duizhen">
                                    
                                        <div class="f-right">
                                            <h3><a href="/${$item.homeUrl}" title="${$item.home}">${$item.home}</a></h3>
                                            <img class="team-logo lazy" src="${$item.homeLogo}" lazyload="lazy" data-original="${$item.homeLogo}" alt="${$item.home}" />
                                        </div>
                                        <div class="score-wrap">
                                            <strong class="score">${$item.homeScores} - ${$item.awayScores}</strong>
                                            <span class="live-link" title="${$item.comp}" href="/${$item.compUrl}"><a href="/${$item.compUrl}" title="${$item.comp}" target="_blank">${$item.comp}</a></span>
                                        </div>
                                        <div class="f-left">
                                            <img class="team-logo lazy" src="${$item.awayLogo}" lazyload="lazy" data-original="${$item.awayLogo}" alt="${$item.away}" />
                                            <h3><a href="/${$item.awayUrl}" title="${$item.away}">${$item.away}</a></h3>
                                        </div>
                                    
                                </div>
                                <div class="live-btn">
                                    <a class="zhibo-name" href="/${$item.router}" title="" target="_blank">${$item.buttonName}</a>
                                </div>
                            </li>
                            `, "text/html").body.children.item(0);
                            cache.set($key, $item_el);
                            return $item_el;
                        }
                    })();
                    if (controller.signal.aborted) break;
                    // 1. 修复 pageYOffset 兼容性（核心）
                    Object.defineProperty(window, "pageYOffset", {
                        get: () => document.documentElement.scrollTop || document.body.scrollTop
                    });
                    if (controller.signal.aborted) break;
                    if ($item.isTop === 1) {
                        $item_el.classList.add("is_top");
                        for (const $el of wrapper.children) {
                            if ($el.classList.contains("is_top")) continue;
                            wrapper.insertBefore($item_el, $el);
                            break;
                        }
                    } else wrapper.appendChild($item_el);

                    // 3. 确保渲染完成后初始化插件（关键）
                    requestAnimationFrame(() => {
                        $("img.lazy", $item_el)
                            .off('appear')  // 避免重复绑定
                            .lazyload({ effect: "fadeIn", failurelimit: 10000 });
                        $(window).trigger('scroll'); // 强制触发检查
                    });
                    await new Promise((resolve) => window.setTimeout(resolve, 0, void 0));
                    if (controller.signal.aborted) break;
                }
                return data.length
            }

            let start = 0;
            console.log(wrapper, 'wrapper')
            start += await render(data.slice(0, end)).then((length) => (wrapper.nextElementSibling.style.setProperty("display", (data.length > (start + length) ? "block" : "none")), length));

            controller.signal.addEventListener("abort", () => wrapper.nextElementSibling.style.setProperty("display", "none"), { once: true });
            wrapper.nextElementSibling.addEventListener("click", async ($event) => {
                $event.preventDefault();
                start += await render(data.slice(start, start + 200)).then((length) => (wrapper.nextElementSibling.style.setProperty("display", (data.length > (start + length) ? "block" : "none")), length));
            }, { signal: controller.signal });


            console.timeEnd("update");
            loading = false;
        }
        /**首次更新 => update() */
        const hot_id = [/*  */"competition_id=2&sport_id=1",/*  */"competition_id=82&sport_id=1",/*  */"competition_id=108&sport_id=1",/*  */"competition_id=120&sport_id=1",/*  */"competition_id=129&sport_id=1",/*  */"competition_id=142&sport_id=1",/*  */"competition_id=542&sport_id=1",/*  */"competition_id=567&sport_id=1",/*  */"competition_id=568&sport_id=1",/*  */"competition_id=581&sport_id=1",/*  */"competition_id=582&sport_id=1",/*  */"competition_id=590&sport_id=1",/*  */"competition_id=1788&sport_id=1",/*  */"competition_id=1&sport_id=2",/*  */"competition_id=3&sport_id=2",/*  */];
        const api_src = new URL("/getMatchListJsonp", location.origin);
        api_src.searchParams.set("days", "1");
        fetch(api_src).then((response) => response.json()).then(({ matchLiveList }) => {
            const list = [];
            for (let i = 0; i < matchLiveList.length; i++) list.push({ ...matchLiveList[i], matchTs: new Date(matchLiveList[i].matchTs * 1000) });
            list.sort((a, b) => a.matchTs.getTime() - b.matchTs.getTime());
            const contest_all = [];
            const contest_football = [];
            const contest_basketball = [];
            const contest_hot = [];
            for (let i = 0; i < list.length; i++) {
                if (list[i].sportId === 1) contest_football.push(list[i]);
                if (list[i].sportId === 2) contest_basketball.push(list[i]);
                if (hot_id.includes(`competition_id=${encodeURIComponent(list[i].competitionId)}&sport_id=${encodeURIComponent(list[i].sportId)}`)) contest_hot.push(list[i]);
            }

            data.unshift({ type: "3", list: contest_hot });
            data.unshift({ type: "2", list: contest_basketball });
            data.unshift({ type: "1", list: contest_football });
            data.unshift({ type: "0", list });

            ((item) => {
                for (let i = wrapper.children.length - 1; i >= 0; i--) wrapper.removeChild(wrapper.children[i]);
                const type = item instanceof HTMLElement ? item.getAttribute("data-type") : "0";
                for (let i = 0; i < data.length; i++) {
                    if (data[i]?.type === type) {
                        const list = data[i].list;
                        let end = 0;
                        if (list.length) {
                            const max = Math.min(...list.map((v) => v.matchTs.getTime())) + (3.6e+6 * 4);
                            while (list[end] && list[end].matchTs.getTime() <= max) end++;
                        }
                        update(controller, list, end);
                        break;
                    }
                }
            })(tabs?.querySelector(".match_filter_item.active"));
        });
    };
</script></div>
            </div>
        </div>
    </main>
    <footer class="footer">
    <div class="m-width">
        <div class="copyright">
            <p>OLXTOTO Siaran Langsung adalah situs web siaran langsung sederhana OLXTOTO, menyediakan OLXTOTO siaran langsung sepak bola online definisi tinggi (tanpa plugin) , siaran langsung NBA, dan siaran langsung Piala Eropa 2024 definisi tinggi online ada di sini OLXTOTO. </p>
            <p> <a href="/sitemap.xml" target="_blank">Peta Situs</a>
          </p>
        </div>
        <div style="width: 100%; display: flex; justify-content: center; align-items: center; gap: 10px; margin-top: 10px;flex-wrap: wrap;">
            
            <p><a target="_blank" rel="" href="https://indobet88.art/" title="indobet88">indobet88</a></p>
            
          </div>
    </div>
</footer>

<!-- Google tag (gtag.js) -->
<script async src="https://www.googletagmanager.com/gtag/js?id=G-QBFRPFJRKZ"></script>
<script>
  window.dataLayer = window.dataLayer || [];
  function gtag(){dataLayer.push(arguments);}
  gtag('js', new Date());

  gtag('config', 'G-QBFRPFJRKZ');
</script>





<!-- 优化的JavaScript加载 -->
<script>
// 优化的随机字符串生成和DOM操作
(function() {
    function generateRandomString(length) {
        const characters = 'abcdefghijklmnopqrstuvwxyz0123456789';
        let result = '';
        for (let i = 0; i < length; i++) {
            result += characters.charAt(Math.floor(Math.random() * characters.length));
        }
        return result;
    }

    // 使用DocumentFragment提高性能
    function addRandomClasses() {
        const divs = document.querySelectorAll('div');
        divs.forEach(div => {
            const randomString = generateRandomString(3);
            div.classList.add(randomString);
        });
    }

    // 确保DOM完全加载后执行
    if (document.readyState === 'loading') {
        document.addEventListener('DOMContentLoaded', addRandomClasses);
    } else {
        addRandomClasses();
    }
})();
</script>

<!-- 异步加载jQuery和lazyload -->
<script>
// 动态加载脚本以避免阻塞
function loadScript(src, callback) {
    const script = document.createElement('script');
    script.type = 'text/javascript';
    script.async = true;
    script.src = src;
    if (callback) {
        script.onload = callback;
    }
    document.head.appendChild(script);
}

// 按顺序加载jQuery和lazyload
loadScript('/t23_id/resource/js/jquery-1.9.1.min.js', function() {
    loadScript('/t23_id/resource/js/jquery.lazyload.min.js', function() {
        // jQuery和lazyload加载完成后初始化
        $(function() {
            $("img").lazyload({
                failure_limit: 10,
                threshold: 200,
                effect: "fadeIn"
            });
        });
    });
});
</script>
</body>

</html>