Showing source for: https://www.brokenspokeaustintx.com/
Duration: 0.199165s
Server: TencentEdgeOne
<!DOCTYPE html>
<html lang="vi">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<link rel="preconnect" href="https://fonts.googleapis.com" />
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;700&display=swap" rel="stylesheet" />
<link rel="stylesheet" href="/wp-content/themes/cakhiatv/style.css" />
<meta name="google-site-verification" content="K1FjdN85jeZ09k0kpuOzFdnXAEbeIAFoDqk4itZf_5c" />
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "Organization",
"@id": "https://xoilactvttbd.com/",
"name": "Xoilac TV",
"alternateName": "Xôi Lạc TV",
"logo": "https://cdn.xoilactvttbd.com/wp-content/themes/cakhiatv/assets/images/xoilactv-logo-remove.png",
"image": "https://cdn.xoilactvttbd.com/wp-content/uploads/2025/12/gioi-thieu-xoilac-1.jpg",
"description": "Xoilac tv là kênh xem bóng Äá trá»±c tiếp 24/7 ÄÆ°á»£c hà ng triá»u ngưá»i hâm má» xem trá»±c tiếp bóng Äá tin tưá»ng má»i ngà y. Há» thá»ng phát sóng hÆ¡n 20 giải Äấu lá»n nhá» như Ngoại Hạng Anh, Champions League hay V-League vá»i chất lượng hình ảnh Full HD. Nhá» tá»c Äá» tải nhanh, không giáºt lag và hoà n toà n miá»
n phÃ, xem bd tt xôi lạc tv trá» thà nh lá»±a chá»n hà ng Äầu cá»§a fan bóng Äá trá»±c tuyến Viá»t Nam.
Email: [email protected]
Sá» Äiá»n thoại: 0906 266 798
Website: https://xoilactvttbd.com/
Äá»a chá»: 1A Lê Thá» Há»ng Gấm, Phưá»ng Nguyá»
n Thái Bình, Quáºn 1, Thà nh phá» Há» Chà Minh, Vietnam",
"url":"https://xoilactvttbd.com/",
"telephone": "+840906 266 798",
"priceRange": "0",
"address": {
"@type": "PostalAddress",
"streetAddress": "1A Lê Thá» Há»ng Gấm, Phưá»ng Nguyá»
n Thái Bình, Quáºn 1, Thà nh phá» Há» Chà Minh",
"addressLocality": "1A Lê Thá» Há»ng Gấm, Phưá»ng Nguyá»
n Thái Bình, Quáºn 1",
"addressRegion": "HỠChà Minh",
"postalCode": "700000",
"addressCountry": "Viá»t Nam"
},
"geo": {
"@type": "GeoCoordinates",
"latitude": 10.8768923,
"longitude": 106.642066
},
"openingHoursSpecification": {
"@type": "OpeningHoursSpecification",
"dayOfWeek": [
"Monday",
"Tuesday",
"Wednesday",
"Thursday",
"Friday",
"Saturday",
"Sunday"
],
"opens": "08:30",
"closes": "17:00"
},
"sameAs": [
"https://www.facebook.com/bk8link6com/",
"https://twitter.com/xoilactvttbdcom",
"https://www.pinterest.com/xoilactvttbdcom/",
"https://www.mixcloud.com/xoilactvttbdcom/",
"https://profile.hatena.ne.jp/xoilactvttbdcom/",
"https://disqus.com/by/xoilactvttbdcom/about/",
"https://www.youtube.com/@xoilactvttbdcom",
"https://gravatar.com/xoilactvttbdcom",
"https://www.goodreads.com/user/show/196036164-xoilactv",
"https://gitlab.com/xoilactvttbdcom",
"https://500px.com/p/xoilactvttbdcom",
"https://sketchfab.com/xoilactvttbdcom",
"https://pixabay.com/es/users/53606318/",
"https://app.readthedocs.org/profiles/xoilactvttbdcom/",
"https://www.gta5-mods.com/users/xoilactvttbdcom",
"https://pastebin.com/u/xoilactvttbdcom",
"https://www.blogger.com/profile/16698412047498595131",
"https://www.deviantart.com/xoilactvttbdcom",
]
}
</script>
<!-- Google tag (gtag.js) -->
<script async src="https://www.googletagmanager.com/gtag/js?id=G-TM77WL0G13"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'G-TM77WL0G13');
</script>
<meta name="google-site-verification" content="oEbM1AH6sQrb4n9rnWvATmX57LDoVh6TrC4pqcZ4XUA" />
<meta name="google-site-verification" content="ElyLNSSqjkjfqZ1Ufgwd6RssQxTTrQpvt5T41NGdUrE" />
<meta name="google-site-verification" content="6QeOtO1jbi6Sb4oc6BbI5LatMLXBFVx-02atJuaWlX8" />
<meta name="google-site-verification" content="FanPVpLHG13UWIHhCCFR6N99MpmGRCX1VaA8IwucwhM" />
<meta name="google-site-verification" content="lA6hmr8REj3qL8dVsdT4S2FeSAS3tfwv7PclXuZches" />
<meta name="google-site-verification" content="YosrwGPqHXk1pYeM1uE3J0dapb4FaaTw4ytRXsEVz-s" />
<script type="application/ld+json">
{
"@context": "https://schema.org",
"@type": "BreadcrumbList",
"itemListElement": [
{
"@type": "ListItem",
"position": 1,
"name": "Trang chá»§",
"item": "https://www.brokenspokeaustintx.com"
},
{
"@type": "ListItem",
"position": 2,
"name": "Xoilactv Link chÃnh thức",
"item": "https://www.brokenspokeaustintx.com/tin-tuc"
}
]
}
</script>
<style>img:is([sizes="auto" i], [sizes^="auto," i]) { contain-intrinsic-size: 3000px 1500px }</style>
<!-- Tá»i ưu hóa công cụ tìm kiếm bá»i Rank Math - https://rankmath.com/ -->
<title>XOILAC TV - Xem bóng Äá trá»±c tiếp Xôi lạc TV - Xem TTBD #1</title>
<meta name="description" content="Xoilac tv là kênh xem bóng Äá trá»±c tiếp 24/7 phát sóng trá»±c tiếp bóng Äá hÆ¡n 20 giải Äấu. Chất lượng hình ảnh HD 4K, tá»c Äá» á»n Äá»nh, xem ttbd trên má»i thiết bá»."/>
<meta name="robots" content="follow, index, max-snippet:-1, max-video-preview:-1, max-image-preview:large"/>
<link rel="canonical" href="https://www.brokenspokeaustintx.com/" />
<meta property="og:locale" content="vi_VN" />
<meta property="og:type" content="website" />
<meta property="og:title" content="XOILAC TV - Xem bóng Äá trá»±c tiếp Xôi lạc TV - Xem TTBD #1" />
<meta property="og:description" content="Xoilac tv là kênh xem bóng Äá trá»±c tiếp 24/7 phát sóng trá»±c tiếp bóng Äá hÆ¡n 20 giải Äấu. Chất lượng hình ảnh HD 4K, tá»c Äá» á»n Äá»nh, xem ttbd trên má»i thiết bá»." />
<meta property="og:url" content="https://www.brokenspokeaustintx.com/" />
<meta property="og:site_name" content="Xoilac tv" />
<meta property="og:updated_time" content="2026-04-27T10:09:05+07:00" />
<meta property="og:image" content="https://cdn.brokenspokeaustintx.com/wp-content/uploads/2025/12/xoilac-1.jpg" />
<meta property="og:image:secure_url" content="https://cdn.brokenspokeaustintx.com/wp-content/uploads/2025/12/xoilac-1.jpg" />
<meta property="og:image:width" content="800" />
<meta property="og:image:height" content="450" />
<meta property="og:image:alt" content="Xoilac" />
<meta property="og:image:type" content="image/jpeg" />
<meta property="article:published_time" content="2025-09-08T14:05:35+07:00" />
<meta property="article:modified_time" content="2026-04-27T10:09:05+07:00" />
<meta name="twitter:card" content="summary_large_image" />
<meta name="twitter:title" content="XOILAC TV - Xem bóng Äá trá»±c tiếp Xôi lạc TV - Xem TTBD #1" />
<meta name="twitter:description" content="Xoilac tv là kênh xem bóng Äá trá»±c tiếp 24/7 phát sóng trá»±c tiếp bóng Äá hÆ¡n 20 giải Äấu. Chất lượng hình ảnh HD 4K, tá»c Äá» á»n Äá»nh, xem ttbd trên má»i thiết bá»." />
<meta name="twitter:image" content="https://cdn.brokenspokeaustintx.com/wp-content/uploads/2025/12/xoilac-1.jpg" />
<meta name="twitter:label1" content="ÄÆ°á»£c viết bá»i" />
<meta name="twitter:data1" content="Admin" />
<meta name="twitter:label2" content="Thá»i gian Äá» Äá»c" />
<meta name="twitter:data2" content="25 phút" />
<script type="application/ld+json" class="rank-math-schema">{"@context":"https://schema.org","@graph":[{"@type":["Organization","Person"],"@id":"https://www.brokenspokeaustintx.com/#person","name":"Xoilac tv","url":"https://xoilactvttbd.com/","address":{"@type":"PostalAddress","addressCountry":"admin"}},{"@type":"WebSite","@id":"https://www.brokenspokeaustintx.com/#website","url":"https://www.brokenspokeaustintx.com","name":"Xoilac tv","publisher":{"@id":"https://www.brokenspokeaustintx.com/#person"},"inLanguage":"vi","potentialAction":{"@type":"SearchAction","target":"https://www.brokenspokeaustintx.com/?s={search_term_string}","query-input":"required name=search_term_string"}},{"@type":"ImageObject","@id":"https://cdn.brokenspokeaustintx.com/wp-content/uploads/2025/12/xoilac-1.jpg","url":"https://cdn.brokenspokeaustintx.com/wp-content/uploads/2025/12/xoilac-1.jpg","width":"800","height":"450","inLanguage":"vi"},{"@type":"WebPage","@id":"https://www.brokenspokeaustintx.com/#webpage","url":"https://www.brokenspokeaustintx.com/","name":"XOILAC TV - Xem b\u00f3ng \u0111\u00e1 tr\u1ef1c ti\u1ebfp X\u00f4i l\u1ea1c TV - Xem TTBD #1","datePublished":"2025-09-08T14:05:35+07:00","dateModified":"2026-04-27T10:09:05+07:00","about":{"@id":"https://www.brokenspokeaustintx.com/#person"},"isPartOf":{"@id":"https://www.brokenspokeaustintx.com/#website"},"primaryImageOfPage":{"@id":"https://cdn.brokenspokeaustintx.com/wp-content/uploads/2025/12/xoilac-1.jpg"},"inLanguage":"vi"},{"@type":"Person","@id":"https://www.brokenspokeaustintx.com/tac-gia/seo/","name":"Admin","url":"https://www.brokenspokeaustintx.com/tac-gia/seo/","image":{"@type":"ImageObject","@id":"https://secure.gravatar.com/avatar/ad61670926c47f2b732ffa3d7bcfeea37e9afab93cf5d1aaf83df66abc167a69?s=96&d=mm&r=g","url":"https://secure.gravatar.com/avatar/ad61670926c47f2b732ffa3d7bcfeea37e9afab93cf5d1aaf83df66abc167a69?s=96&d=mm&r=g","caption":"Admin","inLanguage":"vi"}},{"@type":"Article","headline":"XOILAC TV - Xem b\u00f3ng \u0111\u00e1 tr\u1ef1c ti\u1ebfp X\u00f4i l\u1ea1c TV - Xem TTBD #1","keywords":"Xoilac","datePublished":"2025-09-08T14:05:35+07:00","dateModified":"2026-04-27T10:09:05+07:00","author":{"@id":"https://www.brokenspokeaustintx.com/tac-gia/seo/","name":"Admin"},"publisher":{"@id":"https://www.brokenspokeaustintx.com/#person"},"description":"Xoilac tv l\u00e0 k\u00eanh xem b\u00f3ng \u0111\u00e1 tr\u1ef1c ti\u1ebfp 24/7 ph\u00e1t s\u00f3ng tr\u1ef1c ti\u1ebfp b\u00f3ng \u0111\u00e1 h\u01a1n 20 gi\u1ea3i \u0111\u1ea5u. Ch\u1ea5t l\u01b0\u1ee3ng h\u00ecnh \u1ea3nh HD 4K, t\u1ed1c \u0111\u1ed9 \u1ed5n \u0111\u1ecbnh, xem ttbd tr\u00ean m\u1ecdi thi\u1ebft b\u1ecb.","name":"XOILAC TV - Xem b\u00f3ng \u0111\u00e1 tr\u1ef1c ti\u1ebfp X\u00f4i l\u1ea1c TV - Xem TTBD #1","@id":"https://www.brokenspokeaustintx.com/#richSnippet","isPartOf":{"@id":"https://www.brokenspokeaustintx.com/#webpage"},"image":{"@id":"https://cdn.brokenspokeaustintx.com/wp-content/uploads/2025/12/xoilac-1.jpg"},"inLanguage":"vi","mainEntityOfPage":{"@id":"https://www.brokenspokeaustintx.com/#webpage"}}]}</script>
<meta name="google-site-verification" content="4V4Nk-aJkfRfz9xHiiWq9Cj2cICQbA4wuFeycxj_QOs" />
<!-- /Plugin SEO WordPress Rank Math -->
<link rel='dns-prefetch' href='//cdn.brokenspokeaustintx.com' />
<script type="text/javascript">
/* <![CDATA[ */
window._wpemojiSettings = {"baseUrl":"https:\/\/s.w.org\/images\/core\/emoji\/15.1.0\/72x72\/","ext":".png","svgUrl":"https:\/\/s.w.org\/images\/core\/emoji\/15.1.0\/svg\/","svgExt":".svg","source":{"concatemoji":"https:\/\/cdn.brokenspokeaustintx.com\/wp-content\/wp-includes\/js\/wp-emoji-release.min.js?ver=6.8.1"}};
/*! This file is auto-generated */
!function(i,n){var o,s,e;function c(e){try{var t={supportTests:e,timestamp:(new Date).valueOf()};sessionStorage.setItem(o,JSON.stringify(t))}catch(e){}}function p(e,t,n){e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(t,0,0);var t=new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data),r=(e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(n,0,0),new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data));return t.every(function(e,t){return e===r[t]})}function u(e,t,n){switch(t){case"flag":return n(e,"\ud83c\udff3\ufe0f\u200d\u26a7\ufe0f","\ud83c\udff3\ufe0f\u200b\u26a7\ufe0f")?!1:!n(e,"\ud83c\uddfa\ud83c\uddf3","\ud83c\uddfa\u200b\ud83c\uddf3")&&!n(e,"\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc65\udb40\udc6e\udb40\udc67\udb40\udc7f","\ud83c\udff4\u200b\udb40\udc67\u200b\udb40\udc62\u200b\udb40\udc65\u200b\udb40\udc6e\u200b\udb40\udc67\u200b\udb40\udc7f");case"emoji":return!n(e,"\ud83d\udc26\u200d\ud83d\udd25","\ud83d\udc26\u200b\ud83d\udd25")}return!1}function f(e,t,n){var r="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?new OffscreenCanvas(300,150):i.createElement("canvas"),a=r.getContext("2d",{willReadFrequently:!0}),o=(a.textBaseline="top",a.font="600 32px Arial",{});return e.forEach(function(e){o[e]=t(a,e,n)}),o}function t(e){var t=i.createElement("script");t.src=e,t.defer=!0,i.head.appendChild(t)}"undefined"!=typeof Promise&&(o="wpEmojiSettingsSupports",s=["flag","emoji"],n.supports={everything:!0,everythingExceptFlag:!0},e=new Promise(function(e){i.addEventListener("DOMContentLoaded",e,{once:!0})}),new Promise(function(t){var n=function(){try{var e=JSON.parse(sessionStorage.getItem(o));if("object"==typeof e&&"number"==typeof e.timestamp&&(new Date).valueOf()<e.timestamp+604800&&"object"==typeof e.supportTests)return e.supportTests}catch(e){}return null}();if(!n){if("undefined"!=typeof Worker&&"undefined"!=typeof OffscreenCanvas&&"undefined"!=typeof URL&&URL.createObjectURL&&"undefined"!=typeof Blob)try{var e="postMessage("+f.toString()+"("+[JSON.stringify(s),u.toString(),p.toString()].join(",")+"));",r=new Blob([e],{type:"text/javascript"}),a=new Worker(URL.createObjectURL(r),{name:"wpTestEmojiSupports"});return void(a.onmessage=function(e){c(n=e.data),a.terminate(),t(n)})}catch(e){}c(n=f(s,u,p))}t(n)}).then(function(e){for(var t in e)n.supports[t]=e[t],n.supports.everything=n.supports.everything&&n.supports[t],"flag"!==t&&(n.supports.everythingExceptFlag=n.supports.everythingExceptFlag&&n.supports[t]);n.supports.everythingExceptFlag=n.supports.everythingExceptFlag&&!n.supports.flag,n.DOMReady=!1,n.readyCallback=function(){n.DOMReady=!0}}).then(function(){return e}).then(function(){var e;n.supports.everything||(n.readyCallback(),(e=n.source||{}).concatemoji?t(e.concatemoji):e.wpemoji&&e.twemoji&&(t(e.twemoji),t(e.wpemoji)))}))}((window,document),window._wpemojiSettings);
/* ]]> */
</script>
<style id='wp-emoji-styles-inline-css' type='text/css'>
img.wp-smiley, img.emoji {
display: inline !important;
border: none !important;
box-shadow: none !important;
height: 1em !important;
width: 1em !important;
margin: 0 0.07em !important;
vertical-align: -0.1em !important;
background: none !important;
padding: 0 !important;
}
</style>
<link rel='stylesheet' id='wp-block-library-css' href='https://cdn.brokenspokeaustintx.com/wp-content/wp-includes/css/dist/block-library/style.min.css?ver=6.8.1' type='text/css' media='all' />
<style id='classic-theme-styles-inline-css' type='text/css'>
/*! This file is auto-generated */
.wp-block-button__link{color:#fff;background-color:#32373c;border-radius:9999px;box-shadow:none;text-decoration:none;padding:calc(.667em + 2px) calc(1.333em + 2px);font-size:1.125em}.wp-block-file__button{background:#32373c;color:#fff;text-decoration:none}
</style>
<style id='global-styles-inline-css' type='text/css'>
:root{--wp--preset--aspect-ratio--square: 1;--wp--preset--aspect-ratio--4-3: 4/3;--wp--preset--aspect-ratio--3-4: 3/4;--wp--preset--aspect-ratio--3-2: 3/2;--wp--preset--aspect-ratio--2-3: 2/3;--wp--preset--aspect-ratio--16-9: 16/9;--wp--preset--aspect-ratio--9-16: 9/16;--wp--preset--color--black: #000000;--wp--preset--color--cyan-bluish-gray: #abb8c3;--wp--preset--color--white: #ffffff;--wp--preset--color--pale-pink: #f78da7;--wp--preset--color--vivid-red: #cf2e2e;--wp--preset--color--luminous-vivid-orange: #ff6900;--wp--preset--color--luminous-vivid-amber: #fcb900;--wp--preset--color--light-green-cyan: #7bdcb5;--wp--preset--color--vivid-green-cyan: #00d084;--wp--preset--color--pale-cyan-blue: #8ed1fc;--wp--preset--color--vivid-cyan-blue: #0693e3;--wp--preset--color--vivid-purple: #9b51e0;--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple: linear-gradient(135deg,rgba(6,147,227,1) 0%,rgb(155,81,224) 100%);--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan: linear-gradient(135deg,rgb(122,220,180) 0%,rgb(0,208,130) 100%);--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange: linear-gradient(135deg,rgba(252,185,0,1) 0%,rgba(255,105,0,1) 100%);--wp--preset--gradient--luminous-vivid-orange-to-vivid-red: linear-gradient(135deg,rgba(255,105,0,1) 0%,rgb(207,46,46) 100%);--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray: linear-gradient(135deg,rgb(238,238,238) 0%,rgb(169,184,195) 100%);--wp--preset--gradient--cool-to-warm-spectrum: linear-gradient(135deg,rgb(74,234,220) 0%,rgb(151,120,209) 20%,rgb(207,42,186) 40%,rgb(238,44,130) 60%,rgb(251,105,98) 80%,rgb(254,248,76) 100%);--wp--preset--gradient--blush-light-purple: linear-gradient(135deg,rgb(255,206,236) 0%,rgb(152,150,240) 100%);--wp--preset--gradient--blush-bordeaux: linear-gradient(135deg,rgb(254,205,165) 0%,rgb(254,45,45) 50%,rgb(107,0,62) 100%);--wp--preset--gradient--luminous-dusk: linear-gradient(135deg,rgb(255,203,112) 0%,rgb(199,81,192) 50%,rgb(65,88,208) 100%);--wp--preset--gradient--pale-ocean: linear-gradient(135deg,rgb(255,245,203) 0%,rgb(182,227,212) 50%,rgb(51,167,181) 100%);--wp--preset--gradient--electric-grass: linear-gradient(135deg,rgb(202,248,128) 0%,rgb(113,206,126) 100%);--wp--preset--gradient--midnight: linear-gradient(135deg,rgb(2,3,129) 0%,rgb(40,116,252) 100%);--wp--preset--font-size--small: 13px;--wp--preset--font-size--medium: 20px;--wp--preset--font-size--large: 36px;--wp--preset--font-size--x-large: 42px;--wp--preset--spacing--20: 0.44rem;--wp--preset--spacing--30: 0.67rem;--wp--preset--spacing--40: 1rem;--wp--preset--spacing--50: 1.5rem;--wp--preset--spacing--60: 2.25rem;--wp--preset--spacing--70: 3.38rem;--wp--preset--spacing--80: 5.06rem;--wp--preset--shadow--natural: 6px 6px 9px rgba(0, 0, 0, 0.2);--wp--preset--shadow--deep: 12px 12px 50px rgba(0, 0, 0, 0.4);--wp--preset--shadow--sharp: 6px 6px 0px rgba(0, 0, 0, 0.2);--wp--preset--shadow--outlined: 6px 6px 0px -3px rgba(255, 255, 255, 1), 6px 6px rgba(0, 0, 0, 1);--wp--preset--shadow--crisp: 6px 6px 0px rgba(0, 0, 0, 1);}:where(.is-layout-flex){gap: 0.5em;}:where(.is-layout-grid){gap: 0.5em;}body .is-layout-flex{display: flex;}.is-layout-flex{flex-wrap: wrap;align-items: center;}.is-layout-flex > :is(*, div){margin: 0;}body .is-layout-grid{display: grid;}.is-layout-grid > :is(*, div){margin: 0;}:where(.wp-block-columns.is-layout-flex){gap: 2em;}:where(.wp-block-columns.is-layout-grid){gap: 2em;}:where(.wp-block-post-template.is-layout-flex){gap: 1.25em;}:where(.wp-block-post-template.is-layout-grid){gap: 1.25em;}.has-black-color{color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-color{color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-color{color: var(--wp--preset--color--white) !important;}.has-pale-pink-color{color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-color{color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-color{color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-color{color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-color{color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-color{color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-color{color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-color{color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-color{color: var(--wp--preset--color--vivid-purple) !important;}.has-black-background-color{background-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-background-color{background-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-background-color{background-color: var(--wp--preset--color--white) !important;}.has-pale-pink-background-color{background-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-background-color{background-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-background-color{background-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-background-color{background-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-background-color{background-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-background-color{background-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-background-color{background-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-background-color{background-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-background-color{background-color: var(--wp--preset--color--vivid-purple) !important;}.has-black-border-color{border-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-border-color{border-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-border-color{border-color: var(--wp--preset--color--white) !important;}.has-pale-pink-border-color{border-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-border-color{border-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-border-color{border-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-border-color{border-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-border-color{border-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-border-color{border-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-border-color{border-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-border-color{border-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-border-color{border-color: var(--wp--preset--color--vivid-purple) !important;}.has-vivid-cyan-blue-to-vivid-purple-gradient-background{background: var(--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple) !important;}.has-light-green-cyan-to-vivid-green-cyan-gradient-background{background: var(--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan) !important;}.has-luminous-vivid-amber-to-luminous-vivid-orange-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange) !important;}.has-luminous-vivid-orange-to-vivid-red-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-orange-to-vivid-red) !important;}.has-very-light-gray-to-cyan-bluish-gray-gradient-background{background: var(--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray) !important;}.has-cool-to-warm-spectrum-gradient-background{background: var(--wp--preset--gradient--cool-to-warm-spectrum) !important;}.has-blush-light-purple-gradient-background{background: var(--wp--preset--gradient--blush-light-purple) !important;}.has-blush-bordeaux-gradient-background{background: var(--wp--preset--gradient--blush-bordeaux) !important;}.has-luminous-dusk-gradient-background{background: var(--wp--preset--gradient--luminous-dusk) !important;}.has-pale-ocean-gradient-background{background: var(--wp--preset--gradient--pale-ocean) !important;}.has-electric-grass-gradient-background{background: var(--wp--preset--gradient--electric-grass) !important;}.has-midnight-gradient-background{background: var(--wp--preset--gradient--midnight) !important;}.has-small-font-size{font-size: var(--wp--preset--font-size--small) !important;}.has-medium-font-size{font-size: var(--wp--preset--font-size--medium) !important;}.has-large-font-size{font-size: var(--wp--preset--font-size--large) !important;}.has-x-large-font-size{font-size: var(--wp--preset--font-size--x-large) !important;}
:where(.wp-block-post-template.is-layout-flex){gap: 1.25em;}:where(.wp-block-post-template.is-layout-grid){gap: 1.25em;}
:where(.wp-block-columns.is-layout-flex){gap: 2em;}:where(.wp-block-columns.is-layout-grid){gap: 2em;}
:root :where(.wp-block-pullquote){font-size: 1.5em;line-height: 1.6;}
</style>
<link rel='stylesheet' id='main-style-css' href='https://cdn.brokenspokeaustintx.com/wp-content/themes/cakhiatv/style.css?ver=1763729868' type='text/css' media='all' />
<link rel="https://api.w.org/" href="https://www.brokenspokeaustintx.com/wp-json/" /><link rel="alternate" title="JSON" type="application/json" href="https://www.brokenspokeaustintx.com/wp-json/wp/v2/pages/1040" /><link rel="EditURI" type="application/rsd+xml" title="RSD" href="https://www.brokenspokeaustintx.com/xmlrpc.php?rsd" />
<meta name="generator" content="WordPress 6.8.1" />
<link rel='shortlink' href='https://www.brokenspokeaustintx.com/' />
<link rel="alternate" title="oNhúng (JSON)" type="application/json+oembed" href="https://www.brokenspokeaustintx.com/wp-json/oembed/1.0/embed?url=https%3A%2F%2Fwww.brokenspokeaustintx.com%2F" />
<link rel="alternate" title="oNhúng (XML)" type="text/xml+oembed" href="https://www.brokenspokeaustintx.com/wp-json/oembed/1.0/embed?url=https%3A%2F%2Fwww.brokenspokeaustintx.com%2F&format=xml" />
<style>
@media (min-width: 1024px) {
h1 {
font-size: 1.5em !important;
}
}
.match-teams-score {
display: flex !important;
}
@media (max-width: 767px) {
.xgplayer .xg-inner-controls {
height: 60px !important;
}
.header .logo img{
height: 35px;
}
}
@media (min-width: 481px) and (max-width: 767px) {
div#chat_messages {
max-height: 60vh !important;
}
}
</style>
<style>
.match-section {
min-height: 4800px;
}
.match-card__status {
position: absolute;
top: 13%;
left: 50%;
transform: translate(-50%, -50%);
}
.match-card__stats-content {
background: none !important;
box-shadow: none !important
}
@media (max-width: 480px) {
.team__logo {
width: 40px !important;
height: 40px !important;
}
.match-card__league {
max-width: 100px;
}
.match-card__time {
max-width: 100px;
}
.match-card__status {
max-width: 120px;
order: 1 !important;
font-size: 12px
}
.streaming {
padding: 4px;
}
.btn-view-truc-tiep {
padding: 8px 4px !important;
font-size: 12px;
}
.match-card__stats-content {
display: block !important;
}
.match-card__stats {
display: block !important
}
}
@media (min-width: 768px) and (max-width: 1024px) {
.match-card__status {
position: absolute;
top: 13%;
left: 50%;
transform: translate(-50%, -50%);
}
.match-card__league {
max-width: 110px;
}
}
</style><link rel="icon" href="https://cdn.brokenspokeaustintx.com/wp-content/uploads/2025/12/cropped-f6754ec5-1fb5-4392-bb1a-65fcebfd0542-removebg-preview-32x32.png" sizes="32x32" />
<link rel="icon" href="https://cdn.brokenspokeaustintx.com/wp-content/uploads/2025/12/cropped-f6754ec5-1fb5-4392-bb1a-65fcebfd0542-removebg-preview-192x192.png" sizes="192x192" />
<link rel="apple-touch-icon" href="https://cdn.brokenspokeaustintx.com/wp-content/uploads/2025/12/cropped-f6754ec5-1fb5-4392-bb1a-65fcebfd0542-removebg-preview-180x180.png" />
<meta name="msapplication-TileImage" content="https://cdn.brokenspokeaustintx.com/wp-content/uploads/2025/12/cropped-f6754ec5-1fb5-4392-bb1a-65fcebfd0542-removebg-preview-270x270.png" />
<!-- Google tag (tá»ng) -->
<script async src="https://www.googletagmanager.com/gtag/js?id=G-V8GXMSME5N"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'G-V8GXMSME5N');
</script>
<script src="//s1.what-on.com/widget/service-v2.js?key=4ourmiEm" async="async"></script>
</head>
<body>
<!-- Header -->
<header class="header">
<div class="container">
<div class="header__inner">
<a href="/" class="logo">
<img src="https://cdn.brokenspokeaustintx.com/wp-content/themes/cakhiatv/assets/images/xoilactv-logo-remove.png" alt="XOILAC TV" />
</a>
<div style="display: flex; align-items: center">
<nav class="nav">
<button class="nav__toggle">
<img src="https://cdn.brokenspokeaustintx.com/wp-content/themes/cakhiatv/assets/images/hamburger.svg" alt="Menu" />
</button>
<ul class="nav__menu">
<button class="nav__close" aria-label="Close menu"></button>
<li class="nav__item"><a href="/" class=" active">Xoilac TV</a></li><li class="nav__item"><a href="https://www.brokenspokeaustintx.com/bang-xep-hang/" class="">Bảng xếp hạng bóng Äá</a></li><li class="nav__item"><a href="https://www.brokenspokeaustintx.com/ket-qua-bong-da/" class="">Kết quả bóng Äá</a></li><li class="nav__item"><a href="https://www.brokenspokeaustintx.com/lich-thi-dau/" class="">Lá»ch thi Äấu bóng Äá</a></li><li class="nav__item"><a href="https://www.brokenspokeaustintx.com/nhan-dinh/" class="">Nháºn Äá»nh</a></li><li class="nav__item"><a href="https://www.brokenspokeaustintx.com/soi-keo/" class="">Soi kèo bóng Äá</a></li><li class="nav__item"><a href="https://www.brokenspokeaustintx.com/tin-tuc/" class="">Tin tức</a></li> </ul>
</nav>
<div class="header__buttons">
<a href="https://refvsbf.com/" target="_blank" class="btn btn--secondary header-button" rel="nofollow">
<span class="header-text">CƯỢC VSBET</span>
</a>
<a href="https://t.me/vsbet88888888888888888" rel="nofollow" target="_blank" class="btn btn--default header-button">
<span class="header-text">LIÃN Há» KM</span>
</a>
</div>
</div>
</div>
</div>
</header>
<!-- Main Content -->
<!-- Main Content -->
<main style="padding-top: 1px">
<section class="ads">
<div class="container">
</div>
</section>
<!-- Hero Section -->
<section class="hero">
<div class="container">
<div class="hero__content">
<h1 class="text-uppercase">
<p><span data-sheets-root="1">Xoilac TV – Xem bóng Äá trá»±c tiếp Xôi lạc TV – Xem TTBD sá» #1</span></p>
</h1>
</div>
</div>
</section>
<!-- Sports Filter -->
<section class="sports-filter" >
<div class="container">
<div class="sports-filter__inner" style="display: none">
<!-- Group 1: Sports Categories -->
<!--<div class="sports-filter__group sports-categories">
<button
class="sports-filter__button"
data-sport="all"
>
<div class="sports-filter__button-icon">
<img
src="https://cdn.brokenspokeaustintx.com/wp-content/themes/cakhiatv/assets/images/icons/football.png"
alt="Tất Cả"
/>
</div>
<div class="sports-filter__button-text">Tất Cả</div>
<div class="sports-filter__button-count" id="count-all-type"></div>
</button>
<button
class="sports-filter__button"
data-sport="football"
>
<div class="sports-filter__button-icon">
<img
src="https://cdn.brokenspokeaustintx.com/wp-content/themes/cakhiatv/assets/images/icons/football.png"
alt="Football"
/>
</div>
<div class="sports-filter__button-text">Bóng Äá</div>
<div class="sports-filter__button-count" id="count-football"></div>
</button>
<button class="sports-filter__button" data-sport="basketball">
<div class="sports-filter__button-icon">
<img
src="https://cdn.brokenspokeaustintx.com/wp-content/themes/cakhiatv/assets/images/icons/basketball.png"
alt="Basketball"
/>
</div>
<div class="sports-filter__button-text">Bóng rá»</div>
<div class="sports-filter__button-count" id="count-basketball"></div>
</button>
<!-- <button class="sports-filter__button" data-sport="tennis">
<div class="sports-filter__button-icon">
<img src="https://cdn.brokenspokeaustintx.com/wp-content/themes/cakhiatv/assets/images/icons/tennis.png" alt="Tennis" />
</div>
<div class="sports-filter__button-text">Tennis</div>
<div class="sports-filter__button-count" id="count-tennis"></div>
</button> -->
<!--<button class="sports-filter__button" data-sport="volleyball">
<div class="sports-filter__button-icon">
<img
src="https://cdn.brokenspokeaustintx.com/wp-content/themes/cakhiatv/assets/images/icons/volleyball.png"
alt="Volleyball"
/>
</div>
<div class="sports-filter__button-text">Bóng chuyá»n</div>
<div class="sports-filter__button-count" id="count-volleyball"></div>
</button> -->
<div class="livescore-switch">
<label class="switch">
<input type="checkbox" id="livescoreToggle" />
<span class="slider"></span>
</label>
<span class="livescore-label">Livescore</span>
</div>
</div>
<!-- Divider -->
<div class="sports-filter__divider"></div>
<!-- Group 2: Match Filters -->
<div class="sports-filter__group match-filters">
<button class="sports-filter__button_child active" data-filter="child_all">
<div class="sports-filter__button-icon">
<img src="https://cdn.brokenspokeaustintx.com/wp-content/themes/cakhiatv/assets/images/icons/all.png" alt="All" />
</div>
<div class="sports-filter__button-text">Tất cả</div>
<div class="sports-filter__button-count" id="count-all-type"></div>
</button>
<button class="sports-filter__button_child live" data-filter="live">
<div class="sports-filter__button-icon">
<img src="https://cdn.brokenspokeaustintx.com/wp-content/themes/cakhiatv/assets/images/icons/live.png" alt="Live" />
</div>
<div class="sports-filter__button-text">Äang Live</div>
<div class="sports-filter__button-count" id="count-live"></div>
</button>
<!--<button class="sports-filter__button_child" data-filter="hot">
<div class="sports-filter__button-icon">
<img src="https://cdn.brokenspokeaustintx.com/wp-content/themes/cakhiatv/assets/images/icons/hot.png" alt="Hot" />
</div>
<div class="sports-filter__button-text">Tráºn HOT</div>
<div class="sports-filter__button-count" id="count-hot">48</div>
</button>-->
<!--<button class="sports-filter__button_child" data-filter="date" data-value="2026-10-16">
<div class="sports-filter__button-icon">
<img src="https://cdn.brokenspokeaustintx.com/wp-content/themes/cakhiatv/assets/images/icons/calendar.png" alt="Today" />
</div>
<div class="sports-filter__button-text">Hôm Nay</div>
<div class="sports-filter__button-count" id="count-today"></div>
</button>-->
<!--<button class="sports-filter__button_child" data-filter="date" data-value="2026-10-17">
<div class="sports-filter__button-icon">
<img
src="https://cdn.brokenspokeaustintx.com/wp-content/themes/cakhiatv/assets/images/icons/calendar.png"
alt="Tomorrow"
/>
</div>
<div class="sports-filter__button-text">Ngà y Mai</div>
<div class="sports-filter__button-count" id="count-tomorrow"></div>
</button>-->
<!--
<button class="sports-filter__button_child" data-filter="no_blv">
<div class="sports-filter__button-text">Live không BLV</div>
<div class="sports-filter__button-count" id="noblv-live">0</div>
</button>
-->
</div>
</div>
</div>
</section>
<!-- Featured Matches -->
<section class="featured-matches" style="">
<div class="container">
<div class="match-section">
<div id="match-list" class="matches">
</div>
</div>
<!--<div
style="
display: flex;
justify-content: center;
margin-top: 1rem;
margin-bottom: 1rem;
"
>
<a href="#" class="btn btn--readmore">
<span>Xem thêm lá»ch trá»±c tiếp -></span>
</a>
</div>-->
</div>
</section>
<!-- Content Navigation Section -->
<section class="content-nav">
<div class="container">
<div class="content-nav__container" style="max-height:800px !important">
<div class="content-nav__lists">
<div class="content-nav__list">
<!-- Nếu bạn vẫn muá»n giữ Mục lục nà y thá»§ công, thì Äá» lại -->
<p style="font-weight: bold; font-size: 120%">Mục Lục</p>
<!-- Hoặc có thá» xoá toà n bá» <ul> nà y nếu muá»n Gutenberg xá» lý luôn -->
<div class="content-nav__divider"></div>
<div class="content-nav__text">
<p><a href="/">Xoilac</a> tv là kênh xem bóng Äá trá»±c tiếp 24/7 ÄÆ°á»£c hà ng triá»u ngưá»i hâm má» tin tưá»ng má»i ngà y. Há» thá»ng phát sóng hÆ¡n 20 giải Äấu lá»n nhá» như Ngoại Hạng Anh, Champions League hay V-League vá»i chất lượng hình ảnh Full HD. Nhá» tá»c Äá» tải nhanh, không giáºt lag và hoà n toà n miá»
n phÃ, xem bd tt xôi lạc tv trá» thà nh lá»±a chá»n hà ng Äầu cá»§a fan bóng Äá trá»±c tuyến Viá»t Nam.</p>
<h2>Nguá»n gá»c ra Äá»i và mục tiêu phát triá»n xoilac tv</h2>
<div id="attachment_1239" style="width: 810px" class="wp-caption aligncenter"><img fetchpriority="high" decoding="async" aria-describedby="caption-attachment-1239" class="size-full wp-image-1239" src="https://xoilactvttbd.com/wp-content/uploads/2025/12/gioi-thieu-xoilac-1.jpg" alt="gioi thieu xoilac 1" width="800" height="450" title="XOILAC TV - Xem bóng Äá trá»±c tiếp Xôi lạc TV - Xem TTBD sá» #1 1" srcset="https://cdn.brokenspokeaustintx.com/wp-content/uploads/2025/12/gioi-thieu-xoilac-1.jpg 800w, https://cdn.brokenspokeaustintx.com/wp-content/uploads/2025/12/gioi-thieu-xoilac-1-300x169.jpg 300w, https://cdn.brokenspokeaustintx.com/wp-content/uploads/2025/12/gioi-thieu-xoilac-1-768x432.jpg 768w" sizes="(max-width: 800px) 100vw, 800px" /><p id="caption-attachment-1239" class="wp-caption-text">Giá»i thiá»u Xôi lạc tv – Kênh xem bóng Äá trá»±c tiếp</p></div>
<p>Xoilac tv chÃnh thức hoạt Äá»ng từ nÄm 2018, khá»i Äầu như má»t website nhá» phát sóng các tráºn Äấu bóng Äá châu Ãu dà nh cho cá»ng Äá»ng ngưá»i hâm má» tại Viá»t Nam. Sau 7 nÄm phát triá»n, kênh nà y Äã trá» thà nh má»t trong ba trang xem bóng Äá trá»±c tuyến có lượng truy cáºp cao nhất khu vá»±c Äông Nam Ã, Äạt trung bình hÆ¡n 3 triá»u lượt xem/tháng</p>
<p>Ban Äầu, ttbd xoi lac chá» có 2 máy chá»§ Äặt tại Singapore và Viá»t Nam. Äến nay, há» thá»ng Äã má» rá»ng lên 11 máy chá»§ phân phá»i tÃn hiá»u (CDN) tại nhiá»u quá»c gia châu Ã, giúp tá»c Äá» tải video nhanh hÆ¡n từ 25â30% so vá»i các trang cùng loại. Nhá» Äầu tư công nghá» á»n Äá»nh và tá»i ưu ÄÆ°á»ng truyá»n, ngưá»i xem có thá» trá»±c tuyến bóng Äá Full HD vá»i Äá» trá»
trung bình chá» 1,8 giây, thấp hÆ¡n mức trung bình 3,5 giây cá»§a các website thá» thao thông thưá»ng.</p>
<p>Truc tiep bong da xoi lac tv Äặt mục tiêu trá» thà nh kênh bóng Äá sá» 1 tại Viá»t Nam và o nÄm 2026, má» rá»ng phạm vi bản quyá»n phát sóng tá»i toà n bá» 20 giải Äấu lá»n nhất thế giá»i. Từ Äá»nh hưá»ng âxem nhanh â mượt â á»n Äá»nh â Äầy Äá»§ thông tinâ, Xôi lạc tv không ngừng tá»i ưu hóa hạ tầng và ná»i dung Äá» mang lại chất lượng trải nghiá»m cao nhất cho ngưá»i hâm má».</p>
<h2>Link truy cáºp xem bóng Äá trá»±c tiếp Xôi lạc tv uy tÃn, không bá» chặn</h2>
<div id="attachment_1241" style="width: 810px" class="wp-caption aligncenter"><img decoding="async" aria-describedby="caption-attachment-1241" class="size-full wp-image-1241" src="https://xoilactvttbd.com/wp-content/uploads/2025/12/link-xem-xoilac.jpg" alt="link xem" width="800" height="450" title="XOILAC TV - Xem bóng Äá trá»±c tiếp Xôi lạc TV - Xem TTBD sá» #1 2" srcset="https://cdn.brokenspokeaustintx.com/wp-content/uploads/2025/12/link-xem-xoilac.jpg 800w, https://cdn.brokenspokeaustintx.com/wp-content/uploads/2025/12/link-xem-xoilac-300x169.jpg 300w, https://cdn.brokenspokeaustintx.com/wp-content/uploads/2025/12/link-xem-xoilac-768x432.jpg 768w" sizes="(max-width: 800px) 100vw, 800px" /><p id="caption-attachment-1241" class="wp-caption-text">Link xem bóng dá xôi lạc trá»±c tiếp uy tÃn</p></div>
<p>Äá» Äảm bảo ngưá»i hâm má» không bá» lỡ bất kỳ tráºn cầu Äá»nh cao nà o, há» thá»ng xoi lac tv luôn chá»§ Äá»ng cáºp nháºt link truy cáºp chÃnh thức cùng link dá»± phòng hoạt Äá»ng song song. Äặc biá»t trong mùa World Cup 2026 sắp tá»i, khi nhu cầu xem bóng Äá trá»±c tuyến tÄng cao, kênh cà ng chú trá»ng tá»i ưu tá»c Äá» và khả nÄng xá» lý lưu lượng truy cáºp lá»n.</p>
<p>CÆ¡ chế luân chuyá»n tá»± Äá»ng giữa các ÄÆ°á»ng dẫn giúp trải nghiá»m xem bóng Äá trá»±c tuyến luôn liá»n mạch và á»n Äá»nh. Khi ÄÆ°á»ng dẫn chÃnh gặp tình trạng quá tải hoặc bá» giá»i hạn truy cáºp, há» thá»ng ngay láºp tức kÃch hoạt link phụ Äá» ngưá»i xem bd truc tiep có thá» chuyá»n sang trong và i giây.</p>
<p>Nhá» váºy, tÃn hiá»u truyá»n hình không bá» gián Äoạn, Äảm bảo hình ảnh rõ nét, âm thanh sá»ng Äá»ng và tá»c Äá» mượt mà dù bạn Äang xem trên Äiá»n thoại, máy tÃnh bảng hay laptop.</p>
<p><i><strong>Link truy cáºp chÃnh:</strong></i><a href="https://xoilactvttbd.com/" target="_blank" rel="noopener">https://xoilactvttbd.com/</a></p>
<h2>Các ưu Äiá»m hấp dẫn khi xem bóng Äá trá»±c tiếp Xoilac tv</h2>
<div id="attachment_1246" style="width: 810px" class="wp-caption aligncenter"><img decoding="async" aria-describedby="caption-attachment-1246" class="size-full wp-image-1246" src="https://xoilactvttbd.com/wp-content/uploads/2025/12/uu-diem-tai-xoilac.jpg" alt="uu diem tai" width="800" height="450" title="XOILAC TV - Xem bóng Äá trá»±c tiếp Xôi lạc TV - Xem TTBD sá» #1 3" srcset="https://cdn.brokenspokeaustintx.com/wp-content/uploads/2025/12/uu-diem-tai-xoilac.jpg 800w, https://cdn.brokenspokeaustintx.com/wp-content/uploads/2025/12/uu-diem-tai-xoilac-300x169.jpg 300w, https://cdn.brokenspokeaustintx.com/wp-content/uploads/2025/12/uu-diem-tai-xoilac-768x432.jpg 768w" sizes="(max-width: 800px) 100vw, 800px" /><p id="caption-attachment-1246" class="wp-caption-text">Äiá»m hấp dẫn thu hút ngưá»i xem tại xoi lac tv</p></div>
<p>Không chá» sá» hữu há» thá»ng bản quyá»n phát sóng rá»ng, xembd live Xoilac còn gây ấn tượng bá»i chất lượng xem bong da trá»±c tuyến á»n Äá»nh và thân thiá»n vá»i ngưá»i dùng. Dưá»i Äây là những ưu Äiá»m khiến hà ng triá»u ngưá»i hâm má» lá»±a chá»n Xoilac tv là m kênh xem bóng Äá trá»±c tiếp má»i ngà y.</p>
<h3>Bóng Äá trá»±c tiếp Xoilac tv tá»c Äá» tải nhanh và á»n Äá»nh</h3>
<p>Theo dữ liá»u từ GTmetrix, tá»c Äá» tải trung bình cá»§a Xôi lac tv trong nÄm 2024 Äạt 1,97 giây, nhanh hÆ¡n 42% so vá»i mức trung bình 3,4 giây cá»§a các website thá» thao tại Viá»t Nam. Há» thá»ng máy chá»§ ÄÆ°á»£c phân bá» tại nhiá»u quá»c gia châu Ã, giúp cân bằng lưu lượng truy cáºp khi có lượng ngưá»i xem lá»n.</p>
<p>Trong các tráºn cầu Äá»nh cao như chung kết Champions League hay derby Manchester, Xoilac tv từng ghi nháºn tá»i 2,5 triá»u ngưá»i xem cùng lúc mà vẫn duy trì Äá» á»n Äá»nh 99,8%. Äây là tá»· lá» hiếm có á» những trang truc tiep bong da trong khu vá»±c, chứng minh nÄng lá»±c công nghá» và bÄng thông vượt trá»i.</p>
<h3>Hình ảnh bongdatructiep sắc nét, chuẩn Full HD</h3>
<p>Má»i tÃn hiá»u trên xembd line Xoilac tv ÄÆ°á»£c truyá»n tải bằng công nghá» H.265 HEVC giúp tiết kiá»m bÄng thông tá»i 30% so vá»i chuẩn H.264 trưá»c Äây. Nhá» Äó, ngưá»i xem có thá» thưá»ng thức hình ảnh Äạt chuẩn 1080p hoặc 4K trên các thiết bá» có ÄÆ°á»ng truyá»n á»n Äá»nh mà không lo giáºt hình hay Äứng khung.<br />
TÃnh nÄng Auto Quality tá»± Äá»ng Äiá»u chá»nh Äá» phân giải phù hợp vá»i tá»c Äá» mạng giúp hình ảnh luôn mượt mà trong má»i Äiá»u kiá»n. Há» thá»ng âm thanh chuẩn 5.1 ÄÆ°á»£c tá»i ưu hóa Äá» mô phá»ng không khà sân váºn Äá»ng chân thá»±c nhất, mang Äến cảm giác sá»ng Äá»ng như Äang theo dõi trá»±c tiếp ngoà i khán Äà i.</p>
<h3>Xem bóng Äá trá»±c tiếp xôi lạc miá»
n phÃ, không yêu cầu ÄÄng ký</h3>
<p>Má»t trong những lý do khiến Xoi lac tv thu hút Äông Äảo ngưá»i dùng chÃnh là viá»c phát sóng hoà n toà n miá»
n phÃ. Ngưá»i xem không cần tạo tà i khoản hay Äóng phà thà nh viên mà vẫn ÄÆ°á»£c truy cáºp Äầy Äá»§ các tráºn Äấu má»i ngà y.<br />
Theo thá»ng kê ná»i bá» nÄm 2024, hÆ¡n 68% ngưá»i dùng truy cáºp bằng Äiá»n thoại di Äá»ng, 21% bằng máy tÃnh và phần còn lại sá» dụng Smart TV. Má»i tráºn Äấu ÄÆ°á»£c truc tiep bong da xoilac cung cấp từ ba Äến nÄm ÄÆ°á»ng dẫn phát sóng, cho phép ngưá»i xem dá»
dà ng chuyá»n server khi ÄÆ°á»ng truyá»n cháºm hoặc quá tải.</p>
<h3>Kho giải Äấu bongdatructiep xoilac tv phong phú, cáºp nháºt 24/7</h3>
<p>Kho ná»i dung cá»§a Xôi lạc tv ÄÆ°á»£c cáºp nháºt liên tục vá»i trung bình 20â25 tráºn má»i ngà y, bao gá»m cả bóng Äá nam, nữ, trẻ và futsal. Các giải Äấu lá»n như Premier League, Champions League, La Liga, Serie A, Bundesliga hay V-League Äá»u ÄÆ°á»£c phát sóng Äầy Äá»§.<br />
Bên cạnh Äó, chuyên mục âTrá»±c tiếp hôm nayâ và âKết quả bóng Äáâ ÄÆ°á»£c cáºp nháºt theo thá»i gian thá»±c, giúp ngưá»i hâm má» dá»
dà ng theo dõi lá»ch thi Äấu, tá»· sá» và highlight chá» trong và i thao tác. ChÃnh sá»± Äa dạng nà y Äã giúp xem bong da xoi lac trá» thà nh Äá»a chá» toà n diá»n báºc nhất Viá»t Nam.</p>
<h3>Äá» bảo máºt cao, Äảm bảo an toà n khi truy cáºp link xôi lạc tv</h3>
<p>Xoi lac tv ÄÆ°á»£c nhiá»u ngưá»i xem tin tưá»ng không chá» nhá» chất lượng phát sóng mượt mà mà còn vì khả nÄng bảo máºt vượt trá»i. Tất cả các ÄÆ°á»ng dẫn chÃnh thức cá»§a há» thá»ng Äá»u sá» dụng giao thức HTTPS chuẩn quá»c tế, giúp mã hóa toà n bá» dữ liá»u khi truyá»n tải giữa thiết bá» ngưá»i dùng và máy chá»§.</p>
<p>Bên cạnh Äó, Äá»i ngÅ© kỹ thuáºt cá»§a Xôi Lạc TV thưá»ng xuyên rà soát, loại bá» các quảng cáo ẩn và pop-up có dấu hiá»u nguy hiá»m. Má»i link trưá»c khi công bá» Äá»u ÄÆ°á»£c kiá»m duyá»t kỹ lưỡng Äá» hạn chế tá»i Äa rá»§i ro nhiá»
m mã Äá»c hoặc Äiá»u hưá»ng sang trang lạ.</p>
<h3>Giao diá»n trá»±c tiếp bóng Äá thân thiá»n, dá»
sá» dụng trên má»i thiết bá»</h3>
<p>Xoilactv ÄÆ°á»£c thiết kế theo cấu trúc âmá»t chạmâ giúp truy cáºp nhanh và o các tráºn Äang phát. Giao diá»n chia rõ các mục: trá»±c tiếp, lá»ch thi Äấu, kết quả, highlight và tin tức thá» thao, giúp ngưá»i dùng thao tác nhanh chá» trong và i giây.</p>
<p>Ứng dụng xem bd Xoilac tv ra mắt nÄm 2023 Äạt hÆ¡n 1,2 triá»u lượt tải trên Google Play và App Store vá»i Äánh giá trung bình 4,7/5 sao. Giao diá»n tá»i giản, tá»c Äá» phản há»i nhanh và khả nÄng tương thÃch Äa ná»n tảng giúp ngưá»i dùng dá»
dà ng xem trá»±c tiếp bóng Äá hôm nay, dù Äang sá» dụng Äiá»n thoại hay TV thông minh.</p>
<h3>TÃnh nÄng xem bóng Äá tá»i ưu trải nghiá»m ngưá»i xem hiá»n Äại</h3>
<p>Không chá» phát sóng, xôi lạc tv còn bá» sung hà ng loạt tÃnh nÄng má» rá»ng như bình luáºn trá»±c tuyến theo thá»i gian thá»±c, chế Äá» xem Äa góc quay và tùy chá»n phát ná»n khi sá» dụng Äiá»n thoại. Ngưá»i xem bd truc tiep keo nha cai có thá» vừa theo dõi tráºn Äấu vừa truy cáºp tin tức, nháºn Äá»nh trong cùng má»t giao diá»n.</p>
<p>Há» thá»ng còn ghi nhá» Äá»i bóng yêu thÃch, từ Äó tá»± Äá»ng gá»i thông báo trưá»c giá» bóng lÄn 10 phút Äá» ngưá»i dùng không bá» lỡ bất kỳ tráºn cầu nà o. ChÃnh sá»± linh hoạt nà y giúp xoi lac vượt xa các kênh phát sóng truyá»n thá»ng vá» trải nghiá»m ngưá»i dùng.</p>
<h2>Xem bóng Äá Xoilac tv mua bản quyá»n phát sóng các giải Äấu hà ng Äầu</h2>
<div id="attachment_1237" style="width: 810px" class="wp-caption aligncenter"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-1237" class="size-full wp-image-1237" src="https://xoilactvttbd.com/wp-content/uploads/2025/12/cac-giai-dau-tai-xoilac.jpg" alt="cac giai dau tai" width="800" height="450" title="XOILAC TV - Xem bóng Äá trá»±c tiếp Xôi lạc TV - Xem TTBD sá» #1 4" srcset="https://cdn.brokenspokeaustintx.com/wp-content/uploads/2025/12/cac-giai-dau-tai-xoilac.jpg 800w, https://cdn.brokenspokeaustintx.com/wp-content/uploads/2025/12/cac-giai-dau-tai-xoilac-300x169.jpg 300w, https://cdn.brokenspokeaustintx.com/wp-content/uploads/2025/12/cac-giai-dau-tai-xoilac-768x432.jpg 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /><p id="caption-attachment-1237" class="wp-caption-text">Các giải Äấu bóng Äá uy tÃn ÄÆ°á»£c xem nhiá»u nhất</p></div>
<p>Theo thá»ng kê há» thá»ng nÄm 2024, xôi lạc tv trá»±c tiếp bóng Äá hôm nay phát sóng hÆ¡n 1.200 tráºn Äấu má»i nÄm, bao phá»§ 20 giải Äấu hà ng Äầu thế giá»i. Trong Äó, các giải châu Ãu chiếm tá»i 73% tá»ng lượng xem trá»±c tuyến bóng Äá live, còn lại Äến từ các giải khu vá»±c và quá»c tế.</p>
<h3>Xem bóng Äá Ngoại Hạng Anh (Premier League)</h3>
<p>Premier League luôn là giải Äấu ÄÆ°á»£c ngưá»i dùng xôi lạc xem nhiá»u nhất. Giải Äấu quy tụ 20 CLB hà ng Äầu nưá»c Anh vÃ ÄÆ°á»£c Xoilac tv phát sóng Äầy Äá»§ cả 38 vòng. Ngưá»i hâm má» có thá» xem trá»±c tiếp bóng Äá MU, Chelsea, Tottenham hoặc Newcastle má»i lúc chá» qua link xem bóng Äá trá»±c tiếp trên Xoilac TV.</p>
<h3>Bóng Äá trá»±c tiếp UEFA Champions League (Cúp C1 Châu Ãu)</h3>
<p>Cúp C1 là sân chÆ¡i danh giá nhất cấp CLB, thu hút trung bình 600.000 lượt xem má»i tráºn trên kênh xôi lac tv. Những tráºn bán kết giữa Real Madrid â Bayern Munich hay PSG â Manchester City luôn lá»t top âxemtructiepbongdaâ nhiá»u nhất tháng. Công nghá» nén hình ảnh H.265 giúp ngưá»i xem táºn hưá»ng từng pha bóng tá»c Äá» cao trong chất lượng full HD á»n Äá»nh.</p>
<h3>Xem bd trá»±c tiếp Europa League (Cúp C2 Châu Ãu)</h3>
<p>Dù không có sức hút mạnh bằng Champions League, Europa League vẫn chiếm hÆ¡n 12% tá»ng lượng xem trên bóng Äá trá»±c tiếp xôi lạc tv. Các Äá»i như Liverpool, Roma, Leverkusen hay Atalanta tạo nên loạt tráºn hấp dẫn. Ngưá»i hâm má» có thá» theo dõi kết quả bóng Äá hôm nay hoặc xem lại highlight ngay sau má»i vòng Äấu.</p>
<h3>Xem bÄ trá»±c tiếp hôm nay La Liga (Tây Ban Nha)</h3>
<p>La Liga luôn là Äiá»m Äến quen thuá»c cá»§a fan bóng Äá nghá» thuáºt. Mùa 2024, các tráºn cá»§a Real Madrid và Barcelona thu hút hÆ¡n 550.000 lượt xem trung bình. TÃn hiá»u truyá»n hình ÄÆ°á»£c Xoilac tv mua bản quyá»n trá»n mùa giúp fan yên tâm xem bong da trá»±c tuyến không lo giáºt lag.</p>
<h3>Trá»±c tiếp bóng Äá miá»
n phà Serie A (Ã)</h3>
<p>Serie A thu hút ngưá»i hâm má» yêu thÃch chiến thuáºt và lá»i chÆ¡i ká»· luáºt. Những tráºn giữa AC Milan, Inter Milan, Juventus luôn nằm trong top âxem trá»±c tiếp bóng Äá full HD hôm nayâ trên Xoilac. Theo thá»ng kê, tá»· lá» ngưá»i xem tại Viá»t Nam tÄng 18% so vá»i nÄm 2023, cho thấy sức hút ngà y cà ng mạnh cá»§a bóng Äá à trên kênh Xoilac.</p>
<h3>Xoilac tv trá»±c tiếp bóng Äá Bundesliga (Äức)</h3>
<p>Giải Äấu ná»i tiếng vá»i tá»c Äá» cao và phong cách tấn công mạnh mẽ. Các tráºn có Bayern Munich hoặc Borussia Dortmund thưá»ng Äạt hÆ¡n 400.000 lượt live. Xem bong da truc tiep xoi lac cung cấp ÄÆ°á»ng truyá»n bóng Äá trá»±c tiếp á»n Äá»nh, giúp fan Bundesliga táºn hưá»ng trá»n 90 phút mà không gặp gián Äoạn.</p>
<h3>Xem trá»±c tiếp bóng Äá xôi lạc Ligue 1 (Pháp)</h3>
<p>Sá»± xuất hiá»n cá»§a những ngôi sao như Mbappé, Dembele hay Vitinha giúp Ligue 1 tÄng lượng ngưá»i xem trên truc tiep xoi lac tá»i 27% trong mùa giải 2024.Há» thá»ng luôn cáºp nháºt link xem bóng Äá trá»±c tiếp nhanh nhất Äá» ngưá»i dùng không bá» lỡ tráºn cầu cá»§a PSG hay Marseille.</p>
<h3>Xôi lạc tv trá»±c tuyến V-League (Viá»t Nam)</h3>
<p>Giải Äấu quá»c ná»i thu hút mạnh mẽ ngưá»i xem trong nưá»c. Mùa 2024, trung bình má»i tráºn V-League Äạt hÆ¡n 350.000 lượt xem trá»±c tuyến, gấp Äôi so vá»i nÄm 2022. Fan có thá» xem trá»±c tiếp bóng Äá hôm nay giữa các Äá»i như Hà Ná»i FC, Công An Hà Ná»i, HAGL hay Thanh Hóa ngay tại bong da truc tiep xoi lac mà không cần tải thêm ứng dụng.</p>
<h3>Xôi lạc trá»±c tiếp bóng Äá World Cup (FIFA)</h3>
<p>Kỳ World Cup 2022 ghi nháºn ká»· lục trên Xôi lạc tv vá»i 3,5 triá»u lượt xem trong tráºn Argentina â Pháp. Äây là cá»t má»c lá»n khẳng Äá»nh sức mạnh phát sóng toà n cầu cá»§a há» thá»ng. Má»i kỳ World Cup, Xoilac má» chuyên mục âBóng Äá liveâ Äá» cáºp nháºt tá»· sá», nháºn Äá»nh, lá»ch thi Äấu và highlight nhanh nhất.</p>
<h3>Xôi lạc bóng Äá trá»±c tiếp Euro (Giải vô Äá»ch châu Ãu)</h3>
<p>Euro 2024 là giải Äấu ÄÆ°á»£c chá» Äợi nhất trong mùa hè. Há» thá»ng Xoilac tv Äã chuẩn bá» sẵn hạ tầng Äá» Äáp ứng hÆ¡n 2 triá»u lượt truy cáºp cùng lúc. Fan có thá» xem bd truc tuyen má»i lúc, má»i nÆ¡i, chá»n tráºn Äấu yêu thÃch và bình luáºn cùng cá»ng Äá»ng bóng Äá trá»±c tiếp xôi lạc.</p>
<h2>Äiá»m danh các BLV hà ng Äầu tại bóng Äá trá»±c tuyến xôi lạc tv</h2>
<div id="attachment_1236" style="width: 810px" class="wp-caption aligncenter"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-1236" class="size-full wp-image-1236" src="https://xoilactvttbd.com/wp-content/uploads/2025/12/BLV-tai-xoilac.jpg" alt="BLV tai" width="800" height="450" title="XOILAC TV - Xem bóng Äá trá»±c tiếp Xôi lạc TV - Xem TTBD sá» #1 5" srcset="https://cdn.brokenspokeaustintx.com/wp-content/uploads/2025/12/BLV-tai-xoilac.jpg 800w, https://cdn.brokenspokeaustintx.com/wp-content/uploads/2025/12/BLV-tai-xoilac-300x169.jpg 300w, https://cdn.brokenspokeaustintx.com/wp-content/uploads/2025/12/BLV-tai-xoilac-768x432.jpg 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /><p id="caption-attachment-1236" class="wp-caption-text">Äá»i ngÅ© BLV chuyên môn và Äầy kinh nghiá»m</p></div>
<p>Äá»i ngÅ© bình luáºn viên xôi lạc tv trá»±c tiếp bóng Äá hôm nay Äóng vai trò quan trá»ng trong viá»c tạo nên sức hút cho từng tráºn Äấu. Má»i ngưá»i Äá»u mang phong cách riêng, góp phần biến má»i buá»i phát sóng thà nh má»t trải nghiá»m sá»ng Äá»ng và chân thá»±c.</p>
<ul>
<li style="font-weight: 400;" aria-level="1"><strong>Già ng A Lá»</strong>: Gia nháºp từ nÄm 2021, ná»i báºt vá»i phong cách bình luáºn cuá»n hút, tá»c Äá» nhanh và khả nÄng xá» lý tình huá»ng linh hoạt. Anh thưá»ng ÄÆ°á»£c má»i bình luáºn các tráºn Ngoại Hạng Anh và Champions League.</li>
<li style="font-weight: 400;" aria-level="1"><strong>Captain</strong>: Biá»u tượng cá»§a là ng thá» thao Viá»t Nam, có hÆ¡n 20 nÄm kinh nghiá»m, từng xuất hiá»n trong hÆ¡n 500 tráºn phát sóng. Phong cách chững chạc, chuyên sâu giúp khán giả cảm nháºn rõ nhá»p Äiá»u tráºn Äấu.</li>
<li style="font-weight: 400;" aria-level="1"><strong>Batman</strong>: Gắn bó vá»i xem bóng Äá xôi lạc từ những ngà y Äầu. Anh ná»i báºt nhá» khả nÄng phân tÃch chiến thuáºt và truyá»n tải cảm xúc cho ngưá»i nghe. Những tráºn có Man City hoặc Real Madrid luôn mang dấu ấn giá»ng bình luáºn cá»§a anh.</li>
<li style="font-weight: 400;" aria-level="1"><strong>BLV Alex</strong>: Sá» hữu chất giá»ng trẻ trung, hà o hứng, ÄÆ°á»£c yêu thÃch trong các tráºn bóng Äá trá»±c tiếp quá»c ná»i. Theo khảo sát nÄm 2024, anh nằm trong top 5 BLV ÄÆ°á»£c ngưá»i xem bình chá»n cao nhất trên há» thá»ng.</li>
<li style="font-weight: 400;" aria-level="1"><strong>KEVIN</strong>: Phong cách hà i hưá»c, thông minh giúp anh tạo bầu không khà thoải mái trong các tráºn cầu cÄng thẳng. Anh Äảm nhiá»m phần lá»n các tráºn Serie A và La Liga.</li>
<li style="font-weight: 400;" aria-level="1"><strong>BLV ZIZU</strong>: Gia nháºp nÄm 2022, từng là chuyên gia phân tÃch dữ liá»u thá» thao. Anh ÄÆ°á»£c Äánh giá cao nhá» khả nÄng nắm bắt diá»
n biến nhanh vÃ ÄÆ°a ra sá» liá»u thá»ng kê chÃnh xác trong từng pha bóng.</li>
<li style="font-weight: 400;" aria-level="1"><strong>BLV MAX</strong>: Äại diá»n thế há» trẻ, có lá»i dẫn dắt sôi ná»i, thÃch hợp vá»i các tráºn bóng Äá live tá»c Äá» cao như Bundesliga hay Ligue 1. Giá»ng bình luáºn nÄng lượng giúp anh thu hút lượng lá»n fan trẻ.</li>
<li style="font-weight: 400;" aria-level="1"><strong>BLV ROY</strong>: Chuyên bình luáºn các tráºn cầu quá»c tế lá»n như World Cup và Euro. Anh gây ấn tượng vá»i khả nÄng dẫn dắt song ngữ Anh â Viá»t, tạo cảm giác chuyên nghiá»p không kém các kênh quá»c tế.</li>
</ul>
<p>Nhá» Äá»i ngÅ© BLV Äa dạng phong cách, Xoilac tv trá» thà nh nÆ¡i ngưá»i hâm má» không chá» xem trá»±c tiếp bóng Äá mà còn cảm nháºn ÄÆ°á»£c tinh thần thá» thao từ từng lá»i bình luáºn.</p>
<h2>Các ná»i dung tiá»n Ãch khác khi xem trá»±c tuyến bóng Äá Xoilac tv</h2>
<div id="attachment_1243" style="width: 810px" class="wp-caption aligncenter"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-1243" class="size-full wp-image-1243" src="https://xoilactvttbd.com/wp-content/uploads/2025/12/noi-dung-hap-dan-tai-xoilac.jpg" alt="noi dung hap dan tai" width="800" height="450" title="XOILAC TV - Xem bóng Äá trá»±c tiếp Xôi lạc TV - Xem TTBD sá» #1 6" srcset="https://cdn.brokenspokeaustintx.com/wp-content/uploads/2025/12/noi-dung-hap-dan-tai-xoilac.jpg 800w, https://cdn.brokenspokeaustintx.com/wp-content/uploads/2025/12/noi-dung-hap-dan-tai-xoilac-300x169.jpg 300w, https://cdn.brokenspokeaustintx.com/wp-content/uploads/2025/12/noi-dung-hap-dan-tai-xoilac-768x432.jpg 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /><p id="caption-attachment-1243" class="wp-caption-text">Chuyên mục hấp dẫn khi xem bóng Äá Xôi lạc tv</p></div>
<p>Không chá» phát sóng các tráºn cầu Äá»nh cao, trá»±c tiếp bóng Äá xôi lạc tv còn phát triá»n há» sinh thái tiá»n Ãch giúp ngưá»i xem nắm bắt toà n bá» thông tin bóng Äá nhanh chóng, chÃnh xác và Äầy Äá»§ nhất.</p>
<ul>
<li style="font-weight: 400;" aria-level="1"><strong>Lá»ch xem truc tiep bd</strong>: Há» thá»ng cáºp nháºt lá»ch phát sóng 24/7, bao gá»m hÆ¡n 60 giải Äấu trong và ngoà i nưá»c. Ngưá»i dùng có thá» xem trá»±c tuyến bóng Äá hôm nay hoặc tra cứu lá»ch thi Äấu 7 ngà y tá»i ngay trên giao diá»n chÃnh.</li>
<li style="font-weight: 400;" aria-level="1"><strong>Kết quả bóng Äá hôm nay</strong>: Sau khi tráºn Äấu kết thúc, kết quả ÄÆ°á»£c cáºp nháºt ngay trong vòng 60 giây. Há» thá»ng hiá»n thá» Äầy Äá»§ tá»· sá», cầu thá»§ ghi bà n, thẻ phạt và thá»ng kê tá»· lá» kiá»m soát bóng.</li>
<li style="font-weight: 400;" aria-level="1"><strong>Bảng xếp hạng tại xoi lac tv</strong>: Bảng xếp hạng ÄÆ°á»£c Äá»ng bá» dữ liá»u tá»± Äá»ng từ há» thá»ng quá»c tế, Äảm bảo Äá» chÃnh xác gần như tuyá»t Äá»i (sai sá» <0,1%).</li>
<li style="font-weight: 400;" aria-level="1"><strong>Tin tức thá» thao tại bong da xoi lac</strong>: Má»i ngà y, kênh ÄÄng tải hÆ¡n 100 tin bóng Äá má»i, bao gá»m tin chuyá»n nhượng, thông tin cầu thá»§, chiến thuáºt và các sá»± kiá»n bên lá».</li>
<li style="font-weight: 400;" aria-level="1"><strong>Nháºn Äá»nh kết quả bóng Äá</strong>: Tá»ng hợp phân tÃch trưá»c tráºn từ các chuyên gia lâu nÄm. Từ lá»ch sá» Äá»i Äầu, phong Äá» Äá»i bóng, thà nh tÃch Äá»i Äầu ÄÆ°á»£c cáºp nháºt liên tục.</li>
<li style="font-weight: 400;" aria-level="1"><strong>Top bà n thắng</strong>: Tructiepbongda xoilac có tÃnh nÄng tá»ng hợp highlight bà n thắng Äẹp nhất tuần. Video có Äá» dà i từ 2â5 phút, hiá»n thá» chuẩn HD và tải nhanh trên cả 4G lẫn WiFi.</li>
<li style="font-weight: 400;" aria-level="1"><strong>Video highlight</strong>: Sau má»i tráºn, video highlight ÄÆ°á»£c xuất bản trong vòng 15 phút. Há» thá»ng cho phép tua nhanh theo má»c thá»i gian hoặc chá»n góc quay ưa thÃch.</li>
</ul>
<h2>Hưá»ng dẫn xem bóng Äá trá»±c tuyến tại xôi lac tv dá»
dà ng</h2>
<div id="attachment_1238" style="width: 810px" class="wp-caption aligncenter"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-1238" class="size-full wp-image-1238" src="https://xoilactvttbd.com/wp-content/uploads/2025/12/cach-xem-xoilac.jpg" alt="cach xem" width="800" height="450" title="XOILAC TV - Xem bóng Äá trá»±c tiếp Xôi lạc TV - Xem TTBD sá» #1 7" srcset="https://cdn.brokenspokeaustintx.com/wp-content/uploads/2025/12/cach-xem-xoilac.jpg 800w, https://cdn.brokenspokeaustintx.com/wp-content/uploads/2025/12/cach-xem-xoilac-300x169.jpg 300w, https://cdn.brokenspokeaustintx.com/wp-content/uploads/2025/12/cach-xem-xoilac-768x432.jpg 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /><p id="caption-attachment-1238" class="wp-caption-text">Cách xem bóng Äá nhanh chóng, dá»
dà ng tại xoilactv</p></div>
<p>Theo thá»ng kê nÄm 2024, hÆ¡n 85% ngưá»i dùng theo dõi trá»±c tiếp bóng Äá trên thiết bá» di Äá»ng. ChÃnh vì váºy, kênh ÄÆ°á»£c tá»i ưu Äá» ngưá»i xem có thá» truy cáºp nhanh, không cần cà i Äặt hay tạo tà i khoản.</p>
<h3>Cách truy cáºp link xem bóng Äá trá»±c tiếp Xoilac</h3>
<p>Äá» xem trá»±c tiếp bóng Äá hôm nay, ngưá»i dùng chá» cần nháºp Äá»a chá» xoilactvttbd.com trên trình duyá»t. Sau Äó, tại trang chá»§ sẽ hiá»n thá» danh sách các tráºn Äang phát cùng khung giá» phát sóng chi tiết. Má»i tráºn Äấu Äá»u có từ 3 Äến 5 server khác nhau, Äảm bảo tá»c Äá» á»n Äá»nh ngay cả khi lưu lượng truy cáºp tÄng cao.</p>
<p>Các fan có thá» chá»n theo nhu cầu:</p>
<ul>
<li style="font-weight: 400;" aria-level="1"><strong>Server 1</strong>: ưu tiên tá»c Äá», Ãt trá»
nhất (cháºm 1,5 giây so vá»i truyá»n hình cáp).</li>
<li style="font-weight: 400;" aria-level="1"><strong>Server 2</strong>: tá»i ưu cho mạng yếu, hình ảnh 720p.</li>
<li style="font-weight: 400;" aria-level="1"><strong>Server 3</strong>: há» trợ bình luáºn song ngữ Anh â Viá»t.</li>
</ul>
<p>Ngưá»i hâm má» thưá»ng tìm kiếm các từ khóa như xoilac 7 net, xoi lac 7, xôi lạc 7, xôi lạc 7.net, truc tiep bong da xoilac 7, xôi lạc chấm com â tất cả Äá»u dẫn Äến cùng há» thá»ng Xoilac TV chÃnh thức.</p>
<h3>Xem bd link trên Äiá»n thoại, máy tÃnh, Smart TV</h3>
<p>Xoilac há» trợ xem trá»±c tiếp bóng Äá trên má»i thiết bá», mang lại sá»± linh hoạt tá»i Äa cho ngưá»i dùng á» má»i nÆ¡i, má»i lúc.</p>
<ul>
<li style="font-weight: 400;" aria-level="1"><strong>Äiá»n thoại di Äá»ng</strong>: Ứng dụng xoi lạc tương thÃch hoà n toà n vá»i Android và iOS, cho phép xem bóng Äá full HD, âm thanh rõ nét và tá»c Äá» truyá»n á»n Äá»nh. Ngưá»i dùng có thá» tải app Xoi lac tv trá»±c tiếp trên Google Play hoặc App Store, chá» cần báºt chế Äá» xoay ngang Äá» táºn hưá»ng trá»n 90 phút thi Äấu không giáºt lag.</li>
<li style="font-weight: 400;" aria-level="1"><strong>Máy tÃnh và laptop</strong>: Hoạt Äá»ng tá»t trên Windows và macOS, chá» cần truy cáºp website xoilac.tv hoặc xoilac.net là có thá» xem ngay mà không cần cà i thêm phần má»m. Há» thá»ng tá»± Äá»ng tá»i ưu tá»c Äá» tải video Äá» hình ảnh luôn mượt trong khung 1080p.</li>
<li style="font-weight: 400;" aria-level="1"><strong>Smart TV</strong>: TÃch hợp sẵn trình duyá»t há» trợ HTML5 Player, cho phép phát trá»±c tiếp từ website xoilac truc tiep bong da hoặc kết ná»i qua tÃnh nÄng âOne-Click Castâ, giúp ngưá»i xem chuyá»n hình ảnh từ Äiá»n thoại lên tivi chá» trong 5 giây. Chế Äá» nà y giúp thưá»ng thức bóng Äá trá»±c tuyến trên mà n hình lá»n vá»i chất lượng full HD á»n Äá»nh.</li>
</ul>
<h2>Tải app xôi lạc tv â Trải nghiá»m xem bóng Äá mượt mà má»i lúc, má»i nÆ¡i</h2>
<div id="attachment_1244" style="width: 810px" class="wp-caption aligncenter"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-1244" class="size-full wp-image-1244" src="https://xoilactvttbd.com/wp-content/uploads/2025/12/tai-app-xoilac.jpg" alt="tai app" width="800" height="450" title="XOILAC TV - Xem bóng Äá trá»±c tiếp Xôi lạc TV - Xem TTBD sá» #1 8" srcset="https://cdn.brokenspokeaustintx.com/wp-content/uploads/2025/12/tai-app-xoilac.jpg 800w, https://cdn.brokenspokeaustintx.com/wp-content/uploads/2025/12/tai-app-xoilac-300x169.jpg 300w, https://cdn.brokenspokeaustintx.com/wp-content/uploads/2025/12/tai-app-xoilac-768x432.jpg 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /><p id="caption-attachment-1244" class="wp-caption-text">Hưá»ng dẫn tải app xem bóng Äá xoi lac</p></div>
<p>Bên cạnh phiên bản web, xôi lạc tv còn có ứng dụng di Äá»ng dà nh riêng cho ngưá»i hâm má» muá»n theo dõi bóng Äá tiá»n lợi hÆ¡n. Ứng dụng ÄÆ°á»£c tá»i ưu hóa cho cả Android và iOS, giúp ngưá»i dùng xem trá»±c tiếp các tráºn Äấu chá» bằng má»t chạm, không cần tìm link má»i lần truy cáºp.</p>
<ul>
<li style="font-weight: 400;" aria-level="1"><strong>Bưá»c 1</strong>: Truy cáºp và o trang chá»§ chÃnh thức cá»§a bong da truc tuyen xoilac hoặc kênh thông báo chÃnh thức Äá» lấy ÄÆ°á»ng dẫn tải ứng dụng an toà n. Hạn chế tìm kiếm qua các trang lạ vì có thá» xuất hiá»n bản giả mạo chứa quảng cáo Äá»c hại.</li>
<li style="font-weight: 400;" aria-level="1"><strong>Bưá»c 2</strong>: Chá»n phiên bản phù hợp vá»i há» Äiá»u hà nh Äang sá» dụng. Vá»i Android, nhấn âTải xuá»ng APKâ và cho phép cà i Äặt ứng dụng từ nguá»n Äáng tin cáºy. Vá»i iOS, ứng dụng sẽ chuyá»n hưá»ng sang App Store Äá» tải trá»±c tiếp.</li>
<li style="font-weight: 400;" aria-level="1"><strong>Bưá»c 3</strong>: Sau khi cà i Äặt hoà n tất, má» app, ÄÄng nháºp hoặc xem ngay mà không cần tạo tà i khoản. Giao diá»n ÄÆ°á»£c thiết kế ÄÆ¡n giản, dá»
dùng, giúp bạn tìm tráºn Äấu muá»n xem chá» trong và i giây.</li>
<li style="font-weight: 400;" aria-level="1"><strong>Bưá»c 4</strong>: Báºt thông báo âMatch Alertâ Äá» nháºn nhắc nhá» trưá»c giá» bóng lÄn hoặc khi có tráºn cầu hấp dẫn sắp diá»
n ra. Äây là tÃnh nÄng cá»±c kỳ hữu Ãch giúp ngưá»i hâm má» không bá» lỡ bất kỳ phút giây ká»ch tÃnh nà o.</li>
</ul>
<h2>Mẹo tá»i ưu tá»c Äá» khi xem xôi lạc trá»±c tiếp bóng Äá hôm nay</h2>
<div id="attachment_1242" style="width: 810px" class="wp-caption aligncenter"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-1242" class="size-full wp-image-1242" src="https://xoilactvttbd.com/wp-content/uploads/2025/12/meo-xem-xoilac.jpg" alt="meo xem" width="800" height="450" title="XOILAC TV - Xem bóng Äá trá»±c tiếp Xôi lạc TV - Xem TTBD sá» #1 9" srcset="https://cdn.brokenspokeaustintx.com/wp-content/uploads/2025/12/meo-xem-xoilac.jpg 800w, https://cdn.brokenspokeaustintx.com/wp-content/uploads/2025/12/meo-xem-xoilac-300x169.jpg 300w, https://cdn.brokenspokeaustintx.com/wp-content/uploads/2025/12/meo-xem-xoilac-768x432.jpg 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /><p id="caption-attachment-1242" class="wp-caption-text">Lưu ý giúp xem bóng Äá xoilac tv mượt mà </p></div>
<p>Äá» táºn hưá»ng trá»n vẹn các tráºn cầu Äá»nh cao trên xôi lac tv truc tiep vá»i chất lượng á»n Äá»nh nhất, ngưá»i xem nên áp dụng má»t và i mẹo nhá» dưá»i Äây.</p>
<ul>
<li style="font-weight: 400;" aria-level="1">Äóng các tab và ứng dụng không cần thiết khi xem bóng Äá trá»±c tuyến. Viá»c nà y giúp giảm tải cho CPU, giải phóng RAM và bÄng thông mạng, nhá» Äó video xem xoilac bong da sẽ tải nhanh hÆ¡n, hình ảnh rõ nét và hạn chế giáºt lag trong suá»t tráºn Äấu.</li>
<li style="font-weight: 400;" aria-level="1">Ưu tiên sá» dụng mạng cáp quang hoặc 4G/5G á»n Äá»nh. ÄÆ°á»ng truyá»n riêng luôn có Äá» á»n Äá»nh cao hÆ¡n Wi-Fi công cá»ng vá»n dá»
nghẽn bÄng thông. Chá» cần kết ná»i mạng mạnh, bạn có thá» xem trá»n vẹn 90 phút mà không bá» Äứng hình.</li>
<li style="font-weight: 400;" aria-level="1">Báºt chế Äá» Auto Quality Äá» há» thá»ng tá»± Äiá»u chá»nh chất lượng video. TÃnh nÄng nà y giúp truc tiep xoilac tá»± cân bằng Äá» phân giải phù hợp vá»i tá»c Äá» mạng thá»±c tế, Äảm bảo hình ảnh á»n Äá»nh ngay cả khi kết ná»i không mạnh.</li>
<li style="font-weight: 400;" aria-level="1">Truy cáºp sá»m 10 phút trưá»c giá» bóng lÄn Äá» tránh quá tải. Khi hà ng nghìn ngưá»i cùng và o cùng lúc, há» thá»ng dá»
nghẽn. Và o sá»m giúp video tải á»n Äá»nh hÆ¡n, bạn có thá» kiá»m tra âm thanh, khung hình và chá»n server tá»t nhất.</li>
<li style="font-weight: 400;" aria-level="1">Kiá»m tra tá»c Äá» Internet trưá»c khi xem Äá» Äảm bảo chất lượng phát sóng. Mạng từ 10 Mbps trá» lên Äá»§ cho 720p, còn từ 20 Mbps trá» lên cho 1080p Full HD.</li>
</ul>
<h2>Cách khắc phục link bỠchặn khi xem Xôi Lạc TV</h2>
<div id="attachment_1245" style="width: 810px" class="wp-caption aligncenter"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-1245" class="size-full wp-image-1245" src="https://xoilactvttbd.com/wp-content/uploads/2025/12/truy-cap-xoilac-khi-bi-chan.jpg" alt="truy cap xoilac khi bi chan" width="800" height="450" title="XOILAC TV - Xem bóng Äá trá»±c tiếp Xôi lạc TV - Xem TTBD sá» #1 10" srcset="https://cdn.brokenspokeaustintx.com/wp-content/uploads/2025/12/truy-cap-xoilac-khi-bi-chan.jpg 800w, https://cdn.brokenspokeaustintx.com/wp-content/uploads/2025/12/truy-cap-xoilac-khi-bi-chan-300x169.jpg 300w, https://cdn.brokenspokeaustintx.com/wp-content/uploads/2025/12/truy-cap-xoilac-khi-bi-chan-768x432.jpg 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /><p id="caption-attachment-1245" class="wp-caption-text">Cách truy cáºp xoilac khi bá» chặn link</p></div>
<p>Không Ãt ngưá»i hâm má» gặp tình trạng không truy cáºp ÄÆ°á»£c Xôi Lạc TV khi tráºn Äấu Äang Äến há»i gay cấn. Dưá»i Äây là má»t sá» cách khắc phục phá» biến giúp bạn tiếp tục thưá»ng thức trá»n vẹn các tráºn cầu mà không bá» gián Äoạn.</p>
<h3>Sá» dụng link dá»± phòng chÃnh thức ÄÆ°á»£c cáºp nháºt liên tục</h3>
<p>Há» thá»ng xoilac live luôn chuẩn bá» sẵn các ÄÆ°á»ng dẫn dá»± phòng hoạt Äá»ng song song vá»i link chÃnh. Khi má»t tên miá»n bá» chặn hoặc quá tải, ngưá»i xem chá» cần chuyá»n sang link phụ là có thá» tiếp tục theo dõi tráºn Äấu ngay láºp tức. Cách nà y vừa an toà n vừa giúp duy trì chất lượng hình ảnh và tá»c Äá» á»n Äá»nh trong suá»t quá trình xem.</p>
<h3>Xóa bá» nhá» cache hoặc Äá»i trình duyá»t khi gặp lá»i tải trang</h3>
<p>Nhiá»u ngưá»i không biết rằng dữ liá»u cÅ© lưu trong trình duyá»t có thá» khiến viá»c truy cáºp  tructiepbongda xoilac tv bá» gián Äoạn. Viá»c xóa cache, cookie hoặc Äá»i sang trình duyá»t khác như Chrome, Firefox hay Edge thưá»ng giúp khắc phục nhanh lá»i không tải ÄÆ°á»£c trang. Äây là thao tác ÄÆ¡n giản nhưng hiá»u quả, phù hợp cho cả máy tÃnh và Äiá»n thoại.</p>
<h3>Sá» dụng VPN Äá» vượt chặn truy cáºp khu vá»±c</h3>
<p>Trong trưá»ng hợp má»t sá» khu vá»±c bá» hạn chế truy cáºp Xôi Lạc TV, ngưá»i dùng có thá» cà i Äặt VPN Äá» thay Äá»i Äá»a chá» IP. Công cụ nà y giúp vượt qua rà o cản vùng miá»n, truy cáºp á»n Äá»nh mà không là m giảm chất lượng video. Tuy nhiên, bạn nên chá»n VPN uy tÃn Äá» Äảm bảo an toà n thông tin cá nhân.</p>
<h3>Truy cáºp qua ứng dụng hoặc trang tÃch hợp Xôi Lạc TV</h3>
<p>Ứng dụng truc tiếp bóng Äá xoilac trên di Äá»ng giúp ngưá»i dùng xem dá»
dà ng hÆ¡n. Cách nà y giúp hạn chế tình trạng nghẽn mạng và tÄng Äá» á»n Äá»nh khi sá» lượng ngưá»i truy cáºp quá lá»n trong các tráºn cầu Äá»nh cao.</p>
<h2>Má»t sá» trang web xem bd live cùng há» thá»ng xôilac tv</h2>
<div id="attachment_1240" style="width: 810px" class="wp-caption aligncenter"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-1240" class="size-full wp-image-1240" src="https://xoilactvttbd.com/wp-content/uploads/2025/12/kenh-du-phong-xoilac.jpg" alt="kenh du phong" width="800" height="450" title="XOILAC TV - Xem bóng Äá trá»±c tiếp Xôi lạc TV - Xem TTBD sá» #1 11" srcset="https://cdn.brokenspokeaustintx.com/wp-content/uploads/2025/12/kenh-du-phong-xoilac.jpg 800w, https://cdn.brokenspokeaustintx.com/wp-content/uploads/2025/12/kenh-du-phong-xoilac-300x169.jpg 300w, https://cdn.brokenspokeaustintx.com/wp-content/uploads/2025/12/kenh-du-phong-xoilac-768x432.jpg 768w" sizes="auto, (max-width: 800px) 100vw, 800px" /><p id="caption-attachment-1240" class="wp-caption-text">Kênh xem bóng Äá trá»±c tiếp cùng há» thá»ng xoilac tv</p></div>
<p>Há» thá»ng không chá» giá»i hạn trong má»t trang duy nhất mà còn má» rá»ng thà nh nhiá»u kênh phụ trợ. Má»i trang Äảm nháºn vai trò riêng, giúp phân luá»ng ná»i dung và tá»i ưu trải nghiá»m xem bóng Äá trá»±c tuyến cho hà ng triá»u ngưá»i dùng tại Viá»t Nam.</p>
<ul>
<li style="font-weight: 400;" aria-level="1"><strong>Xoilac 1</strong>: Xôi lạc 1 là kênh chuyên phát sóng các tráºn Ngoại Hạng Anh và FA Cup. Má»i tuần xem bóng Äá trá»±c tiếp xôi lạc 1 Äạt trung bình hÆ¡n 800.000 lượt xem.</li>
<li style="font-weight: 400;" aria-level="1"><strong>Xoilac 2</strong>: Xôi lạc 2 táºp trung phát song song Champions League và Europa League. Xoi lac 2Â ÄÆ°á»£c tá»i ưu riêng giúp tá»c Äá» tải nhanh nhất toà n mạng lưá»i.</li>
<li style="font-weight: 400;" aria-level="1"><strong>Xoilac 3</strong>: Xôi lạc 3 chuyên phát sóng các tráºn La Liga và Serie A. Xoi lac 3 há» trợ xem trá»±c tiếp trên Smart TV vá»i giao diá»n Äiá»u hưá»ng thân thiá»n.</li>
<li style="font-weight: 400;" aria-level="1"><strong>Xoilac 5</strong>: Kênh Xoilac 5 Äảm nhiá»m các tráºn thuá»c Bundesliga và Ligue 1, nÆ¡i quy tụ những CLB mạnh như Bayern Munich hay PSG.</li>
<li style="font-weight: 400;" aria-level="1"><strong>Xoilac 6</strong>: Xoilac 6 là kênh thá» nghiá»m công nghá» phát sóng 4K Ultra HD Äầu tiên trong há» thá»ng. Chất lượng hình ảnh cá»±c sắc nét giúp ngưá»i xem cảm nháºn rõ từng pha bóng.</li>
<li style="font-weight: 400;" aria-level="1"><strong>Xoilac 7</strong>: Trá»±c tiếp bóng Äá xoilac 7 là kênh quá»c tế phá» biến nhất trong há» thá»ng, chuyên phát các tráºn giao hữu, World Cup, Euro và Copa America.</li>
<li style="font-weight: 400;" aria-level="1"><strong>Xoilac 8</strong>: Kênh hoạt Äá»ng như dá»± phòng, ưu tiên phát sóng các tráºn thuá»c V-League, Cúp Quá»c Gia và AFC Champions League.</li>
<li style="font-weight: 400;" aria-level="1"><strong>Xoilac 17</strong>: Äây là trang liên kết quá»c tế, phục vụ khu vá»±c Äông Nam à vá»i giao diá»n song ngữ Anh â Viá»t.</li>
<li style="font-weight: 400;" aria-level="1"><strong>Xoilac Net</strong>: Xoilac nét là là kênh phụ quan trá»ng giúp ngưá»i hâm má» xem live trá»±c tiếp các tráºn bóng Äá trong và ngoà i nưá»c.</li>
<li style="font-weight: 400;" aria-level="1"><strong>Xoilac TV1</strong>: Kênh nà y ÄÆ°á»£c thiết kế dà nh riêng cho ngưá»i dùng mobile, tá»i ưu hóa tá»c Äá» cho mạng 4G và 5G.</li>
<li style="font-weight: 400;" aria-level="1"><strong>Xoilac TV 90 phút</strong>: Kênh xembd video Äạt chuẩn HD và hiá»n thá» mượt trên má»i ná»n tảng. Äây là nÆ¡i lý tưá»ng cho ngưá»i xem bá» lỡ trá»±c tiếp nhưng vẫn muá»n theo dõi lại diá»
n biến chÃnh.</li>
<li style="font-weight: 400;" aria-level="1"><strong>Xoilac TV Live</strong>: Xôi lạc chấm tivi phát song song các tráºn bóng Äá quá»c tế trong khung giá» cao Äiá»m, giúp giảm tải cho các kênh chÃnh khi lượng truy cáºp tÄng mạnh.</li>
<li style="font-weight: 400;" aria-level="1"><strong>Mì tôm xôi lạc</strong>: Kênh phát sóng phụ nằm trong há» thá»ng Xoilac, ÄÆ°á»£c nhiá»u ngưá»i dùng lá»±a chá»n nhá» tá»c Äá» tải nhanh và khả nÄng hoạt Äá»ng á»n Äá»nh trên cả di Äá»ng lẫn máy tÃnh.</li>
</ul>
<h2>Kết luáºn</h2>
<p>Xoilac tv là kênh xem <a href="/"><strong>trá»±c tiếp bóng Äá</strong></a> hà ng Äầu Äáp ứng má»i nhu cầu xem bóng Äá trá»±c tuyến cá»§a ngưá»i hâm má» Viá»t Nam. Từ tá»c Äá» phát sóng nhanh, hình ảnh full HD, kho tráºn Äấu Äa dạng và mạng lưá»i kênh phụ Äa dạng, xôi lạc xứng Äáng là lá»±a chá»n sá» má»t cho má»i fan thá» thao. Trải nghiá»m xem bong da truc tiep xoilac trá»n vẹn và an toà n nhất ngay hôm nay.</p>
</div>
</div>
</div>
</div>
</div>
</section>
</main>
<script>
// Sample data (tráºn Äấu)
const matches = {};
</script>
<!-- Footer -->
<!-- <footer class="footer">
<div class="container">
<div class="footer__content">
<p style="font-size: 14px">
Bản quyá»n bá»i
<a href="#"><span class="text-primary">CakhiaTV</span></a> - All
rights reserved
</p>
</div>
</div>
</footer> -->
<footer style="background-color: #111; color: #fff; padding: 30px 15px;">
<div class="footer-column">
<div class="footer-logo">
<img src="https://cdn.brokenspokeaustintx.com/wp-content/themes/cakhiatv/assets/images/xoilactv-logo-remove.png" alt="Xoilac TV" style="vertical-align: middle; height: 90px;">
</div>
<div id="4ourmiEm" style="text-align:center"></div>
<p class="footer-descript">
<p><strong><a href="/">Xoilactv</a></strong> là ná»n tảng xem trá»±c tiếp bóng Äá hà ng Äầu, mang Äến cho ngưá»i hâm má» trải nghiá»m giải trà trá»n vẹn vá»i chất lượng hình ảnh sắc nét và tá»c Äá» truyá»n tải á»n Äá»nh. Tại xoilactv, ngưá»i xem bóng Äá trá»±c tuyến có thá» theo dõi Äầy Äá»§ các giải Äấu lá»n nhá» cùng nhiá»u tráºn cầu Äá»nh cao trong và nưá»c. Xoilac tv cáºp nháºt nhanh lá»ch thi Äấu, kết quả bóng Äá, BXH, tin tức chuyá»n nhượng.</p>
</p>
</div>
<div class="footer-column">
<div class="footer-title">
DANH MỤC
</div>
<ul>
<li><strong><a href="/dieu-khoan-su-dung">Äiá»u khoản sá» dụng</a></strong></li>
<li><strong><a href="/chinh-sach-bao-mat">ChÃnh sách bảo máºt</a></strong></li>
<li><strong><a href="/mien-tru-trach-nhiem">Miá»
n trừ trách nhiá»m</a></strong></li>
<li><a href="/lien-he"><strong>Liên há»</strong></a></li>
</ul>
</div>
<div class="footer-column">
<div class="footer-title">
LIÃN Há»
</div>
<p class="footer-text"><strong>Tên doanh nghiá»p</strong>: <strong>XOILACTV</strong></p>
<p class="footer-text"><strong>Sá» Äiá»n thoại</strong>: 0906 266 798</p>
<p class="footer-text"><strong>Email</strong>: [email protected]</p>
<p class="footer-text"><strong>Äá»a chá»</strong>: <a href="https://maps.app.goo.gl/y9DV3NJMto7ZXfZo6">1A Lê Thá» Há»ng Gấm, Phưá»ng Nguyá»
n Thái Bình, Quáºn 1, Thà nh phá» Há» Chà Minh, Vietnam</a></p>
<p class="footer-text"><strong>Hoạt Äá»ng</strong>: 00:00â23:59 (hằng ngà y)</p>
<div style="margin-top: 15px;">
<a href="#"><img src="https://cdn.brokenspokeaustintx.com/wp-content/wp-content/uploads/2025/04/icon-facebook.webp" alt="Facebook" style="width: 24px; margin: 0 5px;"></a>
<a href="#" rel="nofollow" target="_blank"><img src="/wp-content/uploads/2025/04/twitter_x-logo-freelogovectors.net_.png" alt="Twitter" style="width: 24px; margin: 0 5px;"></a>
<a href="#" rel="nofollow" target="_blank"><img src="https://cdn.brokenspokeaustintx.com/wp-content/wp-content/uploads/2025/04/pngimg.com-twitch_PNG28.png" alt="Twitch" style="width: 24px; margin: 0 5px;"></a>
<a href="#" rel="nofollow" target="_blank"><img src="https://cdn.brokenspokeaustintx.com/wp-content/wp-content/uploads/2025/04/Youtube_logo.png" alt="Youtube" style="width: 24px; margin: 0 5px;"></a>
<a href="#" rel="nofollow" target="_blank"><img src="https://cdn.brokenspokeaustintx.com/wp-content/wp-content/uploads/2025/04/reddit-logo-1.png" alt="Reddit" style="width: 24px; margin: 0 5px;"></a>
<a href="#" rel="nofollow" target="_blank"><img src="https://cdn.brokenspokeaustintx.com/wp-content/wp-content/uploads/2025/04/pngimg.com-pinterest_PNG63.png" alt="Pinterest" style="width: 24px; margin: 0 5px;"></a>
<a href="#" rel="nofollow" target="_blank"><img src="https://cdn.brokenspokeaustintx.com/wp-content/wp-content/uploads/2025/04/free-tumblr-logo-icon-2434-thumb.png" alt="Tumblr" style="width: 24px; margin: 0 5px;"></a>
</div>
</div>
</footer>
<button onclick="scrollToTop()" id="scrollTopBtn" title="Go to top">
<svg viewBox="0 0 24 24">
<path
d="M13,20H11V8L5.5,13.5L4.08,12.08L12,4.16L19.92,12.08L18.5,13.5L13,8V20Z"></path>
</svg>
</button>
<script src="https://cdn.brokenspokeaustintx.com/wp-content/themes/cakhiatv/assets/js/main.js"></script>
</body>
<script>
if ('serviceWorker' in navigator) {
window.addEventListener('load', function () {
navigator.serviceWorker.register('/sw.js')
.then(function (reg) { /*console.log('[SW] â
Registered, scope:', reg.scope);*/ })
.catch(function (err) { /*console.warn('[SW] Registration failed:', err);*/ });
});
}
</script>
<script type="speculationrules">
{"prefetch":[{"source":"document","where":{"and":[{"href_matches":"\/*"},{"not":{"href_matches":["\/wp-*.php","\/wp-admin\/*","\/wp-content\/uploads\/*","\/wp-content\/*","\/wp-content\/plugins\/*","\/wp-content\/themes\/cakhiatv\/*","\/*\\?(.+)"]}},{"not":{"selector_matches":"a[rel~=\"nofollow\"]"}},{"not":{"selector_matches":".no-prefetch, .no-prefetch a"}}]},"eagerness":"conservative"}]}
</script>
<script src="https://www.brokenspokeaustintx.com/js/websocket-client.js"></script>
<style>
@keyframes spin {
0% {
transform: rotate(0deg);
}
100% {
transform: rotate(360deg);
}
}
.loading-spinner {
animation: spin 1s linear infinite;
}
#match-list {
position: relative;
}
#match-list>div[style*="display: flex"] {
width: 100% !important;
max-width: 100% !important;
}
</style>
<script>
// âââ LocalStorage Cache (giá»ng colatv40.live) ââââââââââââââââ
const LS_MATCHES_KEY = 'colatv_matches_v1';
const LS_MATCHES_TTL = 10 * 60 * 1000; // 10 phút
function loadMatchesFromCache() {
try {
const raw = localStorage.getItem(LS_MATCHES_KEY);
if (!raw) return null;
const { data, ts } = JSON.parse(raw);
if (!data || !Array.isArray(data) || data.length === 0) return null;
if (Date.now() - ts > LS_MATCHES_TTL) return null;
return data;
} catch { return null; }
}
function saveMatchesToCache(matches) {
try {
if (!matches || matches.length === 0) return;
localStorage.setItem(LS_MATCHES_KEY, JSON.stringify({ data: matches, ts: Date.now() }));
} catch { /* localStorage full, bá» qua */ }
}
// âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
// Tá»i ưu: Cache DOM selectors Äá» tránh query lại
const filterCountCache = {
countAllType: null,
countAll: null,
countElements: {},
noBlvElement: null,
liveElement: null,
hotElement: null,
todayElement: null,
tomorrowElement: null,
initialized: false
};
function initFilterCountCache() {
if (filterCountCache.initialized) return;
filterCountCache.countAllType = document.getElementById('count-all-type');
filterCountCache.countAll = document.getElementById('count-all');
filterCountCache.noBlvElement = document.getElementById('noblv-live');
filterCountCache.liveElement = document.getElementById('count-live');
filterCountCache.hotElement = document.getElementById('count-hot');
filterCountCache.todayElement = document.getElementById('count-today');
filterCountCache.tomorrowElement = document.getElementById('count-tomorrow');
['football', 'basketball', 'tennis', 'volleyball'].forEach(sport => {
filterCountCache.countElements[sport] = document.getElementById(`count-${sport}`);
});
filterCountCache.initialized = true;
}
// Hà m Äếm sá» lượng tráºn Äấu theo bá» lá»c - Tá»i ưu vá»i cached selectors
function updateFilterCounts(visibleMatchCards, allMatchCards) {
initFilterCountCache();
if (filterCountCache.countAllType) {
filterCountCache.countAllType.textContent = allMatchCards.length;
}
if (filterCountCache.countAll) {
filterCountCache.countAll.textContent = visibleMatchCards.length;
}
['football', 'basketball', 'tennis', 'volleyball'].forEach(sport => {
const countElement = filterCountCache.countElements[sport];
if (countElement) {
const count = Array.from(allMatchCards).filter(card => card.dataset.sport === sport).length;
countElement.textContent = count;
}
});
if (filterCountCache.noBlvElement) {
const noBlvCount = Array.from(visibleMatchCards).filter(card => card.dataset.blv === 'false').length;
filterCountCache.noBlvElement.textContent = noBlvCount;
}
if (filterCountCache.liveElement) {
const noBlvCount = Array.from(visibleMatchCards).filter(card => card.dataset.blv === 'false').length;
const liveCount = Array.from(visibleMatchCards).filter(card => card.dataset.live === 'true').length - noBlvCount;
filterCountCache.liveElement.textContent = liveCount;
}
if (filterCountCache.hotElement) {
const noBlvCount = Array.from(visibleMatchCards).filter(card => card.dataset.blv === 'false').length;
const hotCount = Array.from(visibleMatchCards).filter(card => card.dataset.hot === 'true').length - noBlvCount;
filterCountCache.hotElement.textContent = hotCount;
}
const today = new Date().toISOString().split('T')[0];
const tomorrow = new Date(Date.now() + 86400000).toISOString().split('T')[0];
if (filterCountCache.todayElement) {
const todayCount = Array.from(visibleMatchCards).filter(card => card.dataset.date === today).length;
filterCountCache.todayElement.textContent = todayCount;
}
if (filterCountCache.tomorrowElement) {
const tomorrowCount = Array.from(visibleMatchCards).filter(card => card.dataset.date === tomorrow).length;
filterCountCache.tomorrowElement.textContent = tomorrowCount;
}
}
// Hà m chuyá»n Äá»i ID môn thá» thao thà nh tên
function sportName(sportId) {
const sports = {
1: 'football',
2: 'basketball',
};
return sports[sportId] || 'unknown';
}
// Hà m xỠlý timestamp
function fixtime(timestamp) {
return isNaN(timestamp) ? new Date(timestamp).getTime() : timestamp;
}
// Hà m Äá»nh dạng ngà y giá»
function formatDate(timestamp, format) {
const date = new Date(timestamp * 1000);
const day = String(date.getDate()).padStart(2, '0');
const month = String(date.getMonth() + 1).padStart(2, '0');
const year = date.getFullYear();
const hours = String(date.getHours()).padStart(2, '0');
const minutes = String(date.getMinutes()).padStart(2, '0');
if (format === 'd/m') return `${day}/${month}`;
if (format === 'Y-m-d') return `${year}-${month}-${day}`;
if (format === 'H:i') return `${hours}:${minutes}`;
return date;
}
// Hà m lấy domain API random Äá» tránh Cloudflare rate limit
function getApiDomain() {
const domains = ['api.gvapi.cc'];
// Random chá»n má»t domain
const index = Math.floor(Math.random() * domains.length);
const selected = domains[index];
return 'https://' + selected;
}
// Hà m lấy domain API random cho video-home (pinned-home)
function getVideoHomeApiDomain() {
const domains = ['video-home.gvapi.cc'];
// Random chá»n má»t domain
const index = Math.floor(Math.random() * domains.length);
const selected = domains[index];
return 'https://' + selected;
}
// Hà m hiá»n thá» loading
function showLoading() {
const matchList = getMatchList();
if (!matchList) return;
// Hiá»n thá» trá»±c tiếp trong match-list, thay thế toà n bá» ná»i dung
matchList.innerHTML = `
<div style="text-align: center; padding: 60px 20px; width: 100%; min-height: 400px; display: flex; flex-direction: column; justify-content: center; align-items: center; box-sizing: border-box;">
<div class="loading-spinner" style="display: block; width: 50px; height: 50px; border: 4px solid #f3f3f3; border-top: 4px solid #3498db; border-radius: 50%; animation: spin 1s linear infinite; margin: 0 auto;"></div>
<p style="margin-top: 20px; color: #666; font-size: 16px; text-align: center; width: 100%;">Äang tải dữ liá»u...</p>
</div>
`;
}
// Hà m hiá»n thá» lá»i vá»i các button Äá» xuất
function showErrorWithSuggestions() {
const matchList = getMatchList();
if (!matchList) return;
const suggestionLinks = [
{ name: 'iotditr.com', url: 'https://iotditr.com' },
{ name: 'cntsiend.com', url: 'https://cntsiend.com' },
{ name: 'euwygrb.com', url: 'https://euwygrb.com' },
{ name: 'ppoemlg.com', url: 'https://ppoemlg.com' },
{ name: 'eyhtldu.com', url: 'https://eyhtldu.com' }
];
const buttonsHtml = suggestionLinks.map(link =>
`<a href="${link.url}" target="_blank" rel="nofollow" style="display: inline-block; margin: 8px; padding: 12px 24px; background-color: #3498db; color: white; text-decoration: none; border-radius: 5px; font-weight: bold; transition: background-color 0.3s; cursor: pointer;">${link.name}</a>`
).join('');
// Hiá»n thá» trá»±c tiếp trong match-list, thay thế toà n bá» ná»i dung
matchList.innerHTML = `
<div style="text-align: center; padding: 60px 20px; width: 100%; min-height: 400px; display: flex; flex-direction: column; justify-content: center; align-items: center;">
<div style="margin-bottom: 20px;">
<svg width="64" height="64" viewBox="0 0 24 24" fill="none" stroke="#e74c3c" stroke-width="2" style="margin: 0 auto; display: block;">
<circle cx="12" cy="12" r="10"></circle>
<line x1="12" y1="8" x2="12" y2="12"></line>
<line x1="12" y1="16" x2="12.01" y2="16"></line>
</svg>
</div>
<h3 style="color: #e74c3c; margin-bottom: 15px; font-size: 24px; font-weight: bold;">Há» thá»ng gặp sá»± cá»</h3>
<p style="color: #666; margin-bottom: 30px; font-size: 16px; max-width: 500px;">Bạn có thá» chá»n kênh khác:</p>
<div style="display: flex; flex-wrap: wrap; justify-content: center; gap: 10px; width: 100%; max-width: 800px;">
${buttonsHtml}
</div>
</div>
`;
}
// Hà m fetch vá»i timeout
function fetchWithTimeout(url, timeout = 10000) {
return Promise.race([
fetch(url),
new Promise((_, reject) =>
setTimeout(() => reject(new Error('Request timeout')), timeout)
)
]);
}
// Hà m lấy dữ liá»u tráºn Äấu từ API và render
async function refreshMatches() {
const matchList = getMatchList();
if (!matchList) {
console.error('Không tìm thấy phần tỠmatch-list');
return;
}
// Chá» hiá»n thá» loading nếu chưa có data từ cache
if (!matchList.querySelector('.match-card')) {
showLoading();
}
try {
const apiBase = getApiDomain();
const response = await fetchWithTimeout(apiBase + '/api/matches?t=' + new Date().getTime(), 10000);
if (!response.ok) {
throw new Error('Lá»i khi lấy dữ liá»u API: ' + response.status);
}
const datas = await response.json();
if (!datas.data || typeof datas.data !== 'object') {
throw new Error('Cấu trúc dữ liá»u API không hợp lá»');
}
const newMatches = [];
const matchesByGroup = {}; // Nhóm matches theo competitionName
for (const [key, data] of Object.entries(datas.data)) {
// Bảo vỠnếu anchorAppointmentVoList không phải array
const anchorList = Array.isArray(data.anchorAppointmentVoList) ? data.anchorAppointmentVoList : [];
//if (!anchorList.length) continue;
// Bá» các tráºn "Live streaming"
if (anchorList[0]?.nickName === 'Live streaming') continue;
// Bảo vá» tá» sá»
const homeScoreArr = Array.isArray(data.homeScore) ? data.homeScore : [];
const awayScoreArr = Array.isArray(data.awayScore) ? data.awayScore : [];
const homeScore = homeScoreArr.length ? homeScoreArr[0] : 0;
const awayScore = awayScoreArr.length ? awayScoreArr[0] : 0;
// Nếu match có house_id khác null, thêm ?houseId=... và o slug
let slug = key;
if (data.house_id && data.house_id !== null) {
slug = `${key}?houseId=${data.house_id}`;
}
const competitionName = data.competitionName || 'NBA';
const matchData = {
id: 2,
slug: slug,
sport: sportName(data.sportId),
live: data.matchStatus === 2,
hot: true,
blv: anchorList[0]?.nickName !== 'Live streaming',
date: formatDate(fixtime(data.matchTime), 'd/m'),
datesearch: formatDate(fixtime(data.matchTime), 'Y-m-d'),
hour: formatDate(fixtime(data.matchTime), 'H:i'),
competitionName: competitionName,
teams: [
data.homeTeamName || 'Team C',
data.awayTeamName || 'Team D'
],
score: `${homeScore}:${awayScore}`,
videoUrl: data.videoUrl || 'https://live2.example.com',
animationUrl: data.animationUrl || 'https://animation.example.com',
data: data
};
newMatches.push(matchData);
// Nhóm matches theo competitionName
if (!matchesByGroup[competitionName]) {
matchesByGroup[competitionName] = [];
}
matchesByGroup[competitionName].push(matchData);
}
// Gá»i hà m render vá»i danh sách tráºn Äấu má»i
renderAllMatches(newMatches);
filterMatches('parent', newMatches);
saveMatchesToCache(newMatches); //
} catch (error) {
console.error('Lá»i khi là m má»i tráºn Äấu:', error);
// Äã loại bá» showErrorWithSuggestions() Äá» không ghi Äè giao diá»n SSR nếu API thất bại á» lần gá»i Äầu tiên.
// Há» thá»ng sẽ âm thầm giữ nguyên giao diá»n SSR và Äợi Socket cáºp nháºt.
}
}
function createMatchCard(match) {
// Bảo vá» dữ liá»u, tránh crash nếu cache cÅ© thiếu data
if (!match || !match.data) return '';
// Bảo vỠanchorAppointmentVoList
const anchorList = Array.isArray(match.data.anchorAppointmentVoList)
? match.data.anchorAppointmentVoList
: [];
// XỠlý slug an toà n
const slugStr = match.slug || '';
const baseSlug = slugStr.includes('?') ? slugStr.split('?')[0] : slugStr;
const nicknames = anchorList.map(item => {
const itemHouseId = item.houseId || '';
if (itemHouseId !== '') {
const separator = baseSlug.includes('?') ? '&' : '?';
return `<a href="https://www.brokenspokeaustintx.com/truc-tiep/${baseSlug}${separator}houseId=${itemHouseId}" rel="nofollow">${item.nickName}</a>`;
} else {
return `<a href="https://www.brokenspokeaustintx.com/truc-tiep/${slugStr}" rel="nofollow">${item.nickName}</a>`;
}
});
const nicknameString = nicknames.join(' | ');
// Bảo vá» tá» sá» (dùng lại match.score nếu muá»n)
const homeScoreArr = Array.isArray(match.data.homeScore) ? match.data.homeScore : [];
const awayScoreArr = Array.isArray(match.data.awayScore) ? match.data.awayScore : [];
const homeScore = homeScoreArr.length ? homeScoreArr[0] : 0;
const awayScore = awayScoreArr.length ? awayScoreArr[0] : 0;
return `
<div class="match-card" data-id="${match.id}" data-sport="${match.sport}" data-live="${match.live}" data-blv="${match.blv}" data-hot="${match.hot}" data-date="${match.datesearch}">
<div class="match-card__body">
<a href="https://www.brokenspokeaustintx.com/truc-tiep/${match.slug}" class="link-match" rel="nofollow"></a>
<div class="match-card__header">
<div class="match-card__league">
<span>${match.data.competitionName}</span>
</div>
<div class="match-card__status">
${match.data.matchStatus == 1
? '<div class="match-card__status text-warning text-uppercase">CHƯA BẮT ÄẦU</div>'
: match.data.matchStatus == 2
? '<div class="match-card__status streaming">ÄANG TRá»°C TIẾP</div>'
: match.data.matchStatus == 3
? '<span class="btn btn--warning text-uppercase">Tạm ngừng phát sóng</span>'
: match.data.matchStatus == 4
? '<span class="btn btn--danger text-uppercase">Cấm phát sóng vÄ©nh viá»
n</span>'
: '<span class="btn btn--secondary text-uppercase">Không xác Äá»nh</span>'
}
</div>
<div class="match-card__time"><span class="match-time">${match.hour} - ${match.date}</span></div>
</div>
<div class="match-card__teams">
<div class="team home">
<img src="${match.data.homeTeamLogo}" alt="${match.data.homeTeamName}" class="team__logo">
<span class="team__name">${match.data.homeTeamName}</span>
</div>
<div class="match-card__score">${homeScore} - ${awayScore}</div>
<div class="team">
<img src="${match.data.awayTeamLogo}" alt="${match.data.awayTeamName}" class="team__logo">
<span class="team__name">${match.data.awayTeamName}</span>
</div>
</div>
<div class="match-card__info">
<div class="match-card__stats">
<div class="match-card__stats-content">
${nicknameString}
</div>
</div>
<div class="match-card__odds">
<a href="https://www.brokenspokeaustintx.com/truc-tiep/${match.slug}" class="btn btn--primary" rel="nofollow">
<span>XEM NGAY</span>
</a>
</div>
</div>
</div>
</div>
`;
}
// Khá»i tạo bá» lá»c
let currentFilters = {
sport: 'all',
live: false,
blv: false,
hot: false,
commentator: false,
date: 'all',
league: 'all'
};
// Tá»i ưu: Preload video metadata Äá» tÄng tá»c Äá» load khi click và o match
const videoPreloadCache = new Map(); // Cache preloaded videos
function preloadVideoMetadata(videoUrl) {
if (!videoUrl || videoPreloadCache.has(videoUrl)) {
return; // Äã preload rá»i
}
// Mark as preloading
videoPreloadCache.set(videoUrl, { status: 'loading', timestamp: Date.now() });
// Preload bằng cách tạo video element và load metadata
const video = document.createElement('video');
video.preload = 'metadata'; // ChỠload metadata, không load toà n bỠvideo
video.muted = true;
video.playsInline = true;
video.style.display = 'none';
video.addEventListener('loadedmetadata', function () {
videoPreloadCache.set(videoUrl, { status: 'loaded', timestamp: Date.now() });
document.body.removeChild(video);
});
video.addEventListener('error', function () {
videoPreloadCache.set(videoUrl, { status: 'error', timestamp: Date.now() });
if (document.body.contains(video)) {
document.body.removeChild(video);
}
});
video.src = videoUrl;
document.body.appendChild(video);
// Cleanup cache sau 5 phút
setTimeout(() => {
videoPreloadCache.delete(videoUrl);
}, 5 * 60 * 1000);
}
// Tá»i ưu: Cache match-list selector
let matchListCache = null;
function getMatchList() {
if (!matchListCache) {
matchListCache = document.getElementById('match-list');
}
return matchListCache;
}
// Hà m render toà n bá» tráºn Äấu
function renderAllMatches(matches) {
const matchList = getMatchList();
if (!matchList) {
console.error('Không tìm thấy phần tỠmatch-list');
return;
}
// Xóa danh sách cũ
matchList.innerHTML = '';
// Render danh sách má»i
matches.forEach(match => {
if (!match || !match.data) return; // Bá» qua match lá»i
const cardHTML = createMatchCard(match);
if (!cardHTML) return; // Bá» qua nếu không tạo ÄÆ°á»£c thẻ
const tempDiv = document.createElement('div');
tempDiv.innerHTML = cardHTML.trim();
const cardElement = tempDiv.firstChild;
if (!cardElement) return;
// Ẩn các tráºn không có bình luáºn viên
/*if (cardElement.getAttribute('data-blv') === 'false') {
cardElement.classList.add('d-none');
}*/
// Tá»i ưu: Preload video metadata khi hover và o match card
if (match.data && match.data.videoUrl) {
let preloadTimeout = null;
cardElement.addEventListener('mouseenter', function () {
// Debounce: chá» preload sau 500ms hover
preloadTimeout = setTimeout(() => {
preloadVideoMetadata(match.data.videoUrl);
}, 500);
});
cardElement.addEventListener('mouseleave', function () {
if (preloadTimeout) {
clearTimeout(preloadTimeout);
preloadTimeout = null;
}
});
}
matchList.appendChild(cardElement);
});
// Cáºp nháºt bá» Äếm
const visibleMatches = document.querySelectorAll('.match-card:not(.d-none)');
updateFilterCounts(visibleMatches, document.querySelectorAll('.match-card'));
}
// Hà m lá»c tráºn Äấu
function filterMatches(type, matches) {
const allCards = document.querySelectorAll('.match-card');
// Lá»c theo môn thá» thao
const sportFiltered = Array.from(allCards).filter(card => {
const sport = card.dataset.sport;
return currentFilters.sport === 'all' || sport === currentFilters.sport;
});
let finalFiltered = sportFiltered;
// Ãp dụng các bá» lá»c khác
if (currentFilters.live) {
finalFiltered = finalFiltered.filter(card => card.dataset.live === 'true' && card.dataset.blv === 'true');
} else if (currentFilters.blv) {
finalFiltered = finalFiltered.filter(card => card.dataset.blv === 'false');
} else if (currentFilters.hot) {
finalFiltered = finalFiltered.filter(card => card.dataset.hot === 'true' && card.dataset.blv === 'true');
} else if (currentFilters.date !== 'all') {
finalFiltered = finalFiltered.filter(card => card.dataset.date === currentFilters.date && card.dataset.blv === 'true');
}
// Hiá»n thá»/ẩn các thẻ
allCards.forEach(card => {
card.classList.toggle('d-none', !finalFiltered.includes(card));
});
// Cáºp nháºt bá» Äếm
if (type === 'parent') {
updateFilterCounts(sportFiltered, allCards);
} else {
updateFilterCounts(finalFiltered, allCards);
}
}
// Gắn sá»± kiá»n cho nút lá»c môn thá» thao
document.querySelectorAll('.sports-filter__button[data-sport]').forEach(button => {
button.addEventListener('click', () => {
currentFilters.sport = button.getAttribute('data-sport');
filterMatches('parent');
});
});
// Gắn sá»± kiá»n cho nút lá»c con
document.querySelectorAll('.sports-filter__button_child').forEach(btn => {
btn.addEventListener('click', function () {
const filterType = this.getAttribute('data-filter');
const value = this.getAttribute('data-value');
if (filterType === 'date') {
currentFilters.date = value;
currentFilters.live = false;
currentFilters.hot = false;
currentFilters.blv = false;
} else if (filterType === 'live') {
currentFilters.live = true;
currentFilters.date = 'all';
currentFilters.hot = false;
currentFilters.blv = false;
} else if (filterType === 'hot') {
currentFilters.hot = true;
currentFilters.date = 'all';
currentFilters.live = false;
currentFilters.blv = false;
} else if (filterType === 'child_all') {
currentFilters.live = false;
currentFilters.hot = false;
currentFilters.blv = false;
currentFilters.date = 'all';
}
document.querySelectorAll('.sports-filter__button_child').forEach(b => b.classList.remove('active'));
this.classList.add('active');
filterMatches('child');
});
});
// Gắn sá»± kiá»n cho toggle livescore
const liveToggle = document.getElementById('livescoreToggle');
if (liveToggle) {
liveToggle.addEventListener('change', () => {
currentFilters.live = liveToggle.checked;
filterMatches('parent');
});
}
// ===== WEBSOCKET INTEGRATION =====
let wsClient = null;
let matchesWebSocketConnected = false;
let fallbackPollingInterval = null;
// Function Äá» transform WebSocket data format
function transformWebSocketMatches(data) {
const newMatches = [];
for (const [key, matchData] of Object.entries(data)) {
// Logic tương tự như trong refreshMatches()
const anchorList = Array.isArray(matchData.anchorAppointmentVoList)
? matchData.anchorAppointmentVoList
: [];
if (anchorList[0]?.nickName === 'Live streaming') continue;
const homeScoreArr = Array.isArray(matchData.homeScore) ? matchData.homeScore : [];
const awayScoreArr = Array.isArray(matchData.awayScore) ? matchData.awayScore : [];
const homeScore = homeScoreArr.length ? homeScoreArr[0] : 0;
const awayScore = awayScoreArr.length ? awayScoreArr[0] : 0;
let slug = key;
if (matchData.house_id && matchData.house_id !== null) {
slug = `${key}?houseId=${matchData.house_id}`;
}
const competitionName = matchData.competitionName || 'NBA';
const matchDataObj = {
id: 2,
slug: slug,
sport: sportName(matchData.sportId),
live: matchData.matchStatus === 2,
hot: true,
blv: anchorList[0]?.nickName !== 'Live streaming',
date: formatDate(fixtime(matchData.matchTime), 'd/m'),
datesearch: formatDate(fixtime(matchData.matchTime), 'Y-m-d'),
hour: formatDate(fixtime(matchData.matchTime), 'H:i'),
competitionName: competitionName,
teams: [
matchData.homeTeamName || 'Team C',
matchData.awayTeamName || 'Team D'
],
score: `${homeScore}:${awayScore}`,
videoUrl: matchData.videoUrl || 'https://live2.example.com',
animationUrl: matchData.animationUrl || 'https://animation.example.com',
data: matchData
};
newMatches.push(matchDataObj);
}
return newMatches;
}
// Function Äá» init WebSocket
function initMatchesWebSocket() {
// WebSocket URL - có thỠconfig từ PHP hoặc hardcode
// Nếu có server-socket service, dùng URL Äó
// Format: wss://server.gvapi.cc hoặc ws://localhost:3320
const wsUrl = 'wss://server.ws-xyz.com/ws'; // Thay bằng URL thực tế của bạn
// Check nếu RealtimeWebSocketClient Äã ÄÆ°á»£c load
if (typeof RealtimeWebSocketClient === 'undefined') {
console.warn('[Homepage] RealtimeWebSocketClient not loaded, falling back to polling');
startFallbackPolling();
return;
}
wsClient = new RealtimeWebSocketClient(wsUrl);
// Subscribe to matches updates
wsClient.subscribe('matches:updated', (data) => {
//console.log('[Homepage] Received matches update from WebSocket');
if (data.code === '0000' && data.data) {
// Transform data Äá» tương thÃch vá»i renderAllMatches()
const transformedMatches = transformWebSocketMatches(data.data);
renderAllMatches(transformedMatches);
filterMatches('parent', transformedMatches);
saveMatchesToCache(transformedMatches); //
} else if (data.data && typeof data.data === 'object') {
// Nếu data trực tiếp là object (không có code)
const transformedMatches = transformWebSocketMatches(data.data);
renderAllMatches(transformedMatches);
filterMatches('parent', transformedMatches);
saveMatchesToCache(transformedMatches); //
}
});
// Handle connection events
wsClient.subscribe('connected', () => {
//console.log('[Homepage] WebSocket connected');
matchesWebSocketConnected = true;
// Stop fallback polling nếu Äang chạy
if (fallbackPollingInterval) {
clearInterval(fallbackPollingInterval);
fallbackPollingInterval = null;
}
});
wsClient.subscribe('disconnected', () => {
//console.log('[Homepage] WebSocket disconnected, falling back to polling');
matchesWebSocketConnected = false;
startFallbackPolling();
});
wsClient.subscribe('error', (error) => {
console.error('[Homepage] WebSocket error:', error);
matchesWebSocketConnected = false;
startFallbackPolling();
});
wsClient.connect();
}
// Fallback polling nếu WebSocket fail
function startFallbackPolling() {
if (fallbackPollingInterval) return; // Already running
//('[Homepage] Starting fallback polling');
fallbackPollingInterval = setInterval(() => {
if (!matchesWebSocketConnected) {
refreshMatches(); // Use existing function
} else {
// WebSocket reconnected, stop polling
clearInterval(fallbackPollingInterval);
fallbackPollingInterval = null;
}
}, 120000); // 2 minutes như cũ
}
// Nếu SSR Äã render HTML, ta không cần nạp từ localStorage hay fetch API lần Äầu nữa (tránh nháy mà n hình)
const ssrCardsCount = document.querySelectorAll('.match-card').length;
if (ssrCardsCount === 0) {
// Thá» load từ cache trưá»c nếu không có SSR
const cachedMatches = loadMatchesFromCache();
if (cachedMatches && cachedMatches.length > 0) {
try {
renderAllMatches(cachedMatches);
filterMatches('parent', cachedMatches);
} catch (error) {
console.error('[Cache Render Error]', error);
}
}
// Fetch fresh data từ API (cáºp nháºt + ghi Äè cache)
refreshMatches();
}
// Thá» WebSocket trưá»c, fallback to polling nếu fail
// Delay má»t chút Äá» Äảm bảo RealtimeWebSocketClient Äã ÄÆ°á»£c load
setTimeout(() => {
initMatchesWebSocket();
}, 500);
// Cleanup khi page unload
window.addEventListener('beforeunload', () => {
if (wsClient) {
wsClient.disconnect();
}
if (fallbackPollingInterval) {
clearInterval(fallbackPollingInterval);
}
});
</script>
<style>
.home-banner-slider {
width: 100%;
margin: 15px 0;
border-radius: 8px;
overflow: hidden;
position: relative;
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.2);
display: none;
/* Hidden by default until loaded */
z-index: 10;
}
.home-banner-track {
display: flex;
transition: transform 0.5s ease-in-out;
height: 100%;
}
.home-banner-slide {
min-width: 100%;
display: block;
text-decoration: none;
}
.home-banner-slide img {
width: 100%;
height: auto;
display: block;
object-fit: cover;
}
.home-banner-dots {
position: absolute;
bottom: 10px;
left: 0;
right: 0;
display: flex;
justify-content: center;
gap: 6px;
}
.home-banner-dot {
width: 8px;
height: 8px;
background: rgba(255, 255, 255, 0.5);
border-radius: 50%;
cursor: pointer;
transition: background 0.3s;
}
.home-banner-dot.active {
background: white;
transform: scale(1.2);
}
</style>
<script>
document.addEventListener('DOMContentLoaded', async function () {
try {
// Fetch settings
const res = await fetch('https://api.gvapi.cc/api/settings');
const data = await res.json();
if (data.success && data.home_banners && data.home_banners.length > 0) {
const banners = data.home_banners.sort((a, b) => a.order - b.order);
// Create slider container
const sliderContainer = document.createElement('div');
sliderContainer.className = 'home-banner-slider';
const track = document.createElement('div');
track.className = 'home-banner-track';
const dotsContainer = document.createElement('div');
dotsContainer.className = 'home-banner-dots';
banners.forEach((banner, index) => {
// Slide
const slide = document.createElement('a');
slide.className = 'home-banner-slide';
slide.href = banner.link_url && banner.link_url !== '#' ? banner.link_url : 'javascript:void(0)';
slide.target = banner.link_url && banner.link_url !== '#' ? '_blank' : '_self';
const img = document.createElement('img');
img.src = banner.image_url;
img.alt = banner.name || 'Banner';
slide.appendChild(img);
track.appendChild(slide);
// Dot
const dot = document.createElement('div');
dot.className = 'home-banner-dot';
if (index === 0) dot.classList.add('active');
dot.addEventListener('click', () => {
goToSlide(index);
});
dotsContainer.appendChild(dot);
});
sliderContainer.appendChild(track);
if (banners.length > 1) {
sliderContainer.appendChild(dotsContainer);
}
// Inject into DOM (after h1 in hero content)
const h1 = document.querySelector('.hero__content h1');
if (h1) {
h1.insertAdjacentElement('afterend', sliderContainer);
sliderContainer.style.display = 'block';
// Slider Logic
let currentIndex = 0;
let autoPlayInterval;
const totalSlides = banners.length;
function goToSlide(index) {
if (totalSlides <= 1) return;
currentIndex = index;
track.style.transform = `translateX(-${currentIndex * 100}%)`;
// Update dots
Array.from(dotsContainer.children).forEach((d, i) => {
if (i === currentIndex) d.classList.add('active');
else d.classList.remove('active');
});
resetAutoPlay();
}
function nextSlide() {
let next = currentIndex + 1;
if (next >= totalSlides) next = 0;
goToSlide(next);
}
function resetAutoPlay() {
clearInterval(autoPlayInterval);
autoPlayInterval = setInterval(nextSlide, 3000);
}
if (totalSlides > 1) {
resetAutoPlay();
}
}
}
} catch (err) {
console.error('Lá»i load home banners:', err);
}
});
</script>
<style>
@media (min-width: 481px) and (max-width: 767px) {
.match-card__status {
max-width: 120px;
font-size: 12px;
}
}
@media (min-width: 576px) and (max-width: 767px) {
.match-card__league {
max-width: 100px;
}
}
@media (min-width: 481px) and (max-width: 575px) {
.match-card__header {
flex-direction: row !important;
}
.match-card__time {
max-width: 100px !important;
}
}
.top-live-box {
width: 100%;
height: auto;
display: flex;
gap: 8px;
}
.top-live-box .left {
width: 100%;
min-height: 564px;
background-color: #000;
border-radius: 4px;
overflow: hidden;
}
.top-live-box .live-list {
width: 240px;
flex-shrink: 0;
}
.top-live-box .live-list .live-item {
width: 100%;
height: 144px;
margin-bottom: 6px;
cursor: pointer;
border-radius: 4px;
transition: all .1s ease-in-out;
overflow: hidden;
border: 2px solid transparent;
position: relative;
}
.top-live-box .live-list .live-item .anchor-item {
width: 100%;
height: 100%;
}
.el-image img {
display: block;
width: 100%;
height: 100%;
object-fit: cover;
}
.btn-view-truc-tiep {
position: absolute;
top: 70%;
left: 50%;
transform: translate(-50%, -50%);
z-index: 5;
background: #f2152d;
padding: 20px;
border-radius: 30px;
cursor: pointer;
text-align: center;
}
.btn-view-truc-tiep:hover {
opacity: 0.8;
}
.video-player {
position: relative;
}
.top-live-box .live-list .live-item.active {
border: 2px solid #ff0202;
}
.overlay-click {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
z-index: 10;
display: block;
}
/* Responsive */
@media screen and (max-width: 1024px) {
.top-live-box {
flex-direction: column;
}
.top-live-box .left {
width: 100%;
min-height: 400px;
}
.top-live-box .live-list {
display: none !important;
width: 100%;
flex-direction: row;
flex-wrap: wrap;
justify-content: center;
gap: 6px;
margin-top: 12px;
}
.top-live-box .live-list .live-item {
width: calc(50% - 6px);
height: 120px;
}
}
@media screen and (max-width: 768px) {
.top-live-box .left {
min-height: unset;
}
.btn-view-truc-tiep {
padding: 10px 10px;
font-size: 12px;
}
.top-live-box .live-list .live-item {
width: calc(50% - 3px);
height: 100px;
}
}
@media screen and (max-width: 480px) {
.top-live-box .live-list .live-item {
width: calc(50% - 3px);
height: 100px;
}
.btn-view-truc-tiep {
padding: 8px 14px;
font-size: 13px;
}
.match-card__body {
gap: 0.6rem;
}
}
</style>
<script src="//unpkg.byted-static.com/xgplayer/3.0.0-next.1/dist/index.min.js"></script>
<script src="//unpkg.com/[email protected]/dist/index.min.js"></script>
<link rel="stylesheet" href="//unpkg.byted-static.com/xgplayer/3.0.0-alpha.100/dist/xgplayer.min.css" />
<script type="text/javascript">
// Hà m lấy domain API random cho video-home (pinned-home)
function getVideoHomeApiDomain() {
const domains = [
'video-home.gvapi.cc'
];
// Random chá»n má»t domain
const index = Math.floor(Math.random() * domains.length);
const selected = domains[index];
return 'https://' + selected;
}
document.addEventListener('DOMContentLoaded', function () {
const apiBase = getVideoHomeApiDomain();
const STORAGE_KEY = 'pinnedMatchesCache';
const heroSection = document.querySelector('section.hero');
if (!heroSection) {
console.error('Hero section not found.');
return;
}
const skeletonHtml = `
<div class="top-live-box container skeleton-loading" id="pinned-matches-container">
<style>
.skeleton-box {
display: inline-block;
height: 100%;
width: 100%;
position: relative;
overflow: hidden;
background-color: #2a2a2a;
border-radius: 8px;
}
.skeleton-box::after {
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
transform: translateX(-100%);
background-image: linear-gradient(
90deg,
rgba(255, 255, 255, 0) 0,
rgba(255, 255, 255, 0.05) 20%,
rgba(255, 255, 255, 0.2) 60%,
rgba(255, 255, 255, 0)
);
animation: shimmer 2s infinite;
content: '';
}
@keyframes shimmer { 100% { transform: translateX(100%); } }
.skeleton-loading .left { aspect-ratio: 16/9; background: #1a1a1a; padding: 10px; border-radius: 8px;}
.skeleton-loading .live-list { display: flex; gap: 10px; margin-top: 10px; }
.skeleton-loading .live-item { flex: 1; aspect-ratio: 1/1; background: #1a1a1a; border-radius: 8px; overflow: hidden; }
</style>
<div class="left">
<div class="skeleton-box" style="min-height: 300px;"></div>
</div>
<div class="live-list">
<div class="live-item"><div class="skeleton-box"></div></div>
<div class="live-item"><div class="skeleton-box"></div></div>
<div class="live-item"><div class="skeleton-box"></div></div>
<div class="live-item"><div class="skeleton-box"></div></div>
</div>
</div>
`;
function renderMatches(matches) {
const anchors = matches.slice(0, 4).map((match, index) => ({
streamUrl: match.playStreamAddress2,
image: match.houseImage,
name: match.nickName,
slug: match.slugKey + '?houseId=' + match.houseId
}));
if (anchors.length === 0) return;
const streamUrl = anchors[0].streamUrl;
const liveBoxHtml = `
<div class="top-live-box container" id="pinned-matches-container">
<div class="left">
<div class="video-container">
<div class="video-player">
<div id="mse" style="width: 100%;"></div>
<a href="/truc-tiep/${anchors[0].slug}" class="overlay-click" id="btn-view-link" rel="nofollow"></a>
<span class="btn-view-truc-tiep" rel="nofollow">Và o phòng live Äang phát sóng</span>
</div>
</div>
</div>
<div class="live-list">
${anchors.map((anchor, index) => `
<div class="live-item ${index === 0 ? 'active' : ''} live-living-item" data-index="${index}">
<div class="anchor-item">
<div class="placeholder img">
<img src="${anchor.image}" alt="${anchor.name}" style="object-fit: cover;">
</div>
</div>
</div>
`).join('')}
</div>
</div>
`;
const existingContainer = document.getElementById('pinned-matches-container');
if (existingContainer) {
existingContainer.outerHTML = liveBoxHtml;
} else {
heroSection.insertAdjacentHTML('afterend', liveBoxHtml);
}
if (window.Player && window.HlsPlayer) {
new Player({
plugins: [window.HlsPlayer],
id: "mse",
ignores: ["time", "progress"],
autoplayMuted: true,
autoplay: true,
playsinline: true,
isLive: true,
fluid: true,
pip: true,
muted: true,
url: streamUrl
});
}
const liveItems = document.querySelectorAll('#pinned-matches-container .live-item');
const viewLink = document.getElementById('btn-view-link');
liveItems.forEach(item => {
item.addEventListener('click', () => {
const index = parseInt(item.getAttribute('data-index'));
liveItems.forEach(i => i.classList.remove('active'));
item.classList.add('active');
if (window.Player && window.HlsPlayer) {
new Player({
plugins: [window.HlsPlayer],
id: "mse",
ignores: ["time", "progress"],
autoplayMuted: true,
autoplay: true,
playsinline: true,
isLive: true,
fluid: true,
pip: true,
muted: true,
url: anchors[index].streamUrl
});
}
if (viewLink) {
viewLink.href = '/truc-tiep/' + anchors[index].slug;
}
});
});
}
let hasLocalData = false;
try {
const cached = localStorage.getItem(STORAGE_KEY);
if (cached) {
const parsed = JSON.parse(cached);
if (parsed && parsed.length > 0) {
renderMatches(parsed);
hasLocalData = true;
}
}
} catch (e) {
console.error('Error parsing localStorage:', e);
}
if (!hasLocalData) {
heroSection.insertAdjacentHTML('afterend', skeletonHtml);
}
fetch('https://video-home.gvapi.cc/api/pinned-home?t=' + new Date().getTime())
.then(response => {
if (!response.ok) throw new Error('API Response not ok: ' + response.status);
return response.json();
})
.then(data => {
const matches = data.pinnedMatches;
if (!matches || matches.length < 1) {
localStorage.removeItem(STORAGE_KEY);
const existingContainer = document.getElementById('pinned-matches-container');
if (existingContainer) existingContainer.remove();
return;
}
localStorage.setItem(STORAGE_KEY, JSON.stringify(matches));
renderMatches(matches);
})
.catch(error => {
console.error('Error fetching API data:', error);
if (!hasLocalData) {
const existingContainer = document.getElementById('pinned-matches-container');
if (existingContainer) existingContainer.remove();
}
});
});
</script>
<style>
.aligncenter {
margin: 0 auto;
}
.wp-caption {
max-width: 100%;
}
footer .container {
grid-template-columns: 1fr;
}
</style>
<script>
const mini = document.querySelector('.video-player.is-floating.floating-draggable');
const margin = 8; // cách mép
function clampFloatingVideo() {
if (!mini) return;
const rect = mini.getBoundingClientRect();
let x = rect.left;
let y = rect.top;
const vw = window.innerWidth;
const vh = window.innerHeight;
const minX = margin;
const minY = margin; // nếu muá»n chừa notch: + safeTop
const maxX = vw - rect.width - margin;
const maxY = vh - rect.height - margin;
if (x < minX) x = minX;
if (x > maxX) x = maxX;
if (y < minY) y = minY;
if (y > maxY) y = maxY;
mini.style.left = x + 'px';
mini.style.top = y + 'px';
}
// chạy lại má»i khi viewport thay Äá»i
window.addEventListener('scroll', clampFloatingVideo);
window.addEventListener('resize', clampFloatingVideo);
window.addEventListener('orientationchange', clampFloatingVideo);
// iOS Safari thanh URL co giãn â nên dùng thêm:
if (window.visualViewport) {
visualViewport.addEventListener('resize', clampFloatingVideo);
visualViewport.addEventListener('scroll', clampFloatingVideo);
}
</script>
<script>
// === Catfish Banner Global: lấy từ API /api/catfish-banners (giá»ng React CatfishBanners.jsx) ===
(function () {
var apiUrl = 'https://api.gvapi.cc/api/catfish-banners';
fetch(apiUrl)
.then(function (res) { return res.ok ? res.json() : null; })
.then(function (data) {
if (!data || !data.success || !data.data || !data.data.length) return;
// === Video catfish overlay (nếu có trong trang watch) ===
var catfishLink = data.data[0].link_url || '';
if (catfishLink) {
var overlayTop = document.querySelector('.video-catfish-overlay-top');
var overlayBottom = document.querySelector('.video-catfish-overlay');
if (overlayTop) {
overlayTop.href = catfishLink;
overlayTop.style.display = 'block';
}
if (overlayBottom) {
overlayBottom.href = catfishLink;
overlayBottom.style.display = 'block';
}
}
// === Tạo container catfish-banner-global (fixed bottom, giá»ng React) ===
var wrapper = document.createElement('div');
wrapper.className = 'catfish-banner-global';
wrapper.style.cssText = 'position:fixed;bottom:0;left:0;right:0;z-index:9999;display:flex;flex-direction:column;align-items:center;pointer-events:none;width:50%;margin:0 auto;';
// Nút Äóng
var closeBtn = document.createElement('button');
closeBtn.className = 'catfish-banner-close';
closeBtn.innerHTML = 'â';
closeBtn.setAttribute('aria-label', 'Äóng quảng cáo');
closeBtn.style.cssText = 'position:absolute;top:-24px;right:4px;width:24px;height:24px;background:rgba(0,0,0,0.7);color:#fff;border:none;border-radius:50%;font-size:14px;line-height:24px;text-align:center;cursor:pointer;pointer-events:auto;z-index:10000;padding:0;';
closeBtn.addEventListener('click', function () { wrapper.remove(); });
wrapper.appendChild(closeBtn);
// Render banners
data.data.forEach(function (banner) {
var a = document.createElement('a');
a.className = 'catfish-banner-global-item';
a.href = banner.link_url || '#';
a.target = '_blank';
a.rel = 'nofollow noopener noreferrer';
a.style.cssText = 'display:block;width:100%;pointer-events:auto;line-height:0;cursor:pointer;';
var img = document.createElement('img');
img.src = banner.image_url;
img.alt = banner.name || 'Banner';
img.style.cssText = 'width:100%;height:auto;display:block;object-fit:contain;';
a.appendChild(img);
wrapper.appendChild(a);
});
document.body.appendChild(wrapper);
// Mobile: full width
var mq = window.matchMedia('(max-width: 768px)');
function applyMobile(e) { wrapper.style.width = e.matches ? '100%' : '50%'; }
applyMobile(mq);
mq.addListener(applyMobile);
})
.catch(function (e) { console.warn('Catfish banner load failed:', e); });
})();
</script>
<script>
// === FIX: Chặn smooth-scroll handlers can thiá»p và o catfish overlay ===
(function () {
document.addEventListener('click', function (e) {
var overlay = e.target.closest('.video-catfish-overlay, .video-catfish-overlay-top');
if (!overlay) return;
var href = overlay.getAttribute('href');
if (href && href !== '#' && !href.startsWith('#')) {
e.stopImmediatePropagation();
}
}, true);
})();
</script>
<script>
document.addEventListener("DOMContentLoaded", function () {
const walker = document.createTreeWalker(document.body, NodeFilter.SHOW_TEXT, null, false);
while (walker.nextNode()) {
const node = walker.currentNode;
if (node.nodeValue.match(/vô Äá»ch quá»c gia/i)) {
node.nodeValue = node.nodeValue.replace(/vô Äá»ch quá»c gia/gi, "VÄQG");
}
}
});
</script>
<script>
document.addEventListener('DOMContentLoaded', function () {
function updateLinks() {
document.querySelectorAll('.home-banner-slide').forEach(function(el) {
el.href = 'https://refvsbf.com/';
el.target = '_blank';
});
}
// Banner hiá»n có
updateLinks();
// Banner render sau bằng JS/API
new MutationObserver(updateLinks).observe(document.body, {
childList: true,
subtree: true
});
});
</script>
</html>
<!-- | brokenspokeaustintx.com | 2026-10-16 11:21:12 -->
| # |
Url |
Url |
Source |
Date |
| 1 |
https://www.brokenspokeaustintx.co… |
|
2026-10-16 12:49:52 |
| 2 |
https://usanetworkstore.com/ |
|
2026-10-16 12:49:52 |
| 3 |
https://auth.acog.org/OAuth/SignIn… |
|
2026-10-16 12:49:51 |
| 4 |
https://auth.mediacorp.sg/u/login?… |
|
2026-10-16 12:49:50 |
| 5 |
https://auth.acog.org/OAuth/SignIn… |
|
2026-10-16 12:49:50 |
| 6 |
https://auth.acog.org/OAuth/SignIn… |
|
2026-10-16 12:49:50 |
| 7 |
https://auth.acog.org/OAuth/SignIn… |
|
2026-10-16 12:49:49 |
| 8 |
https://auth.acog.org/OAuth/SignIn… |
|
2026-10-16 12:49:48 |
| 9 |
https://www.texarkanatwins.com/%25… |
|
2026-10-16 12:49:48 |
| 10 |
https://www.texarkanatwins.com/%25… |
|
2026-10-16 12:49:47 |
| 11 |
https://auth.acog.org/OAuth/SignIn… |
|
2026-10-16 12:49:47 |
| 12 |
https://auth.mediacorp.sg/u/login?… |
|
2026-10-16 12:49:47 |
| 13 |
https://auth.acog.org/OAuth/SignIn… |
|
2026-10-16 12:49:47 |
| 14 |
https://auth.acog.org/OAuth/SignIn… |
|
2026-10-16 12:49:46 |
| 15 |
https://auth.mediacorp.sg/u/login?… |
|
2026-10-16 12:49:46 |
| 16 |
https://auth.acog.org/OAuth/SignIn… |
|
2026-10-16 12:49:45 |
| 17 |
https://auth.acog.org/OAuth/SignIn… |
|
2026-10-16 12:49:45 |
| 18 |
https://www.texarkanatwins.com/%25… |
|
2026-10-16 12:49:43 |
| 19 |
https://www.texarkanatwins.com/%25… |
|
2026-10-16 12:49:43 |
| 20 |
https://www.texarkanatwins.com/%25… |
|
2026-10-16 12:49:43 |