Showing source for: https://nexhire.io/
Redirects (1): https://romtools.io/(301) ⟶ https://nexhire.io/
Duration: 0.420905s
Server: TencentEdgeOne
<!DOCTYPE html>
<html lang="vi" style="margin-top: 0px !important">
<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" />
<link rel="shortcut icon" href="/favicon.ico" type="image/x-icon" />
<link rel="icon" href="/favicon.ico" type="image/x-icon" />
<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 PRO - https://rankmath.com/ -->
<title>XoilacTV Trá»±c Tiếp Bóng Äá 24/24 - TTBD Xôi Lạc 90phut #1 VN</title>
<meta name="description" content="Xoilac TV cung cấp link xem bóng Äá trá»±c tuyến, trá»±c tiếp bóng Äá Xôi Lạc TV hôm nay giải Ngoại Hạng Anh, Euro, Bundesliga, VÄQG Tây Ban Nha,..."/>
<meta name="robots" content="follow, index, max-snippet:-1, max-video-preview:-1, max-image-preview:large"/>
<link rel="canonical" href="https://nexhire.io" />
<meta property="og:locale" content="vi_VN" />
<meta property="og:type" content="website" />
<meta property="og:title" content="XoilacTV Trá»±c Tiếp Bóng Äá 24/24 - TTBD Xôi Lạc 90phut #1 VN" />
<meta property="og:description" content="Xoilac TV cung cấp link xem bóng Äá trá»±c tuyến, trá»±c tiếp bóng Äá Xôi Lạc TV hôm nay giải Ngoại Hạng Anh, Euro, Bundesliga, VÄQG Tây Ban Nha,..." />
<meta property="og:url" content="https://nexhire.io" />
<meta property="og:site_name" content="Xoilac TV Trá»±c Tiếp Bóng Äá 90phut HD - TTBD Xôi Lạc #1 VN" />
<meta property="og:updated_time" content="2026-05-28T00:24:43+07:00" />
<meta property="og:image" content="https://cdn.adminxltvcul.com/wp-content/uploads/2025/07/logo-squared.jpg" />
<meta property="og:image:secure_url" content="https://cdn.adminxltvcul.com/wp-content/uploads/2025/07/logo-squared.jpg" />
<meta property="og:image:width" content="1080" />
<meta property="og:image:height" content="1080" />
<meta property="og:image:alt" content="xoilac tv" />
<meta property="og:image:type" content="image/jpeg" />
<meta property="article:published_time" content="2025-06-22T18:41:07+07:00" />
<meta property="article:modified_time" content="2026-05-28T00:24:43+07:00" />
<meta name="twitter:card" content="summary_large_image" />
<meta name="twitter:title" content="XoilacTV Trá»±c Tiếp Bóng Äá 24/24 - TTBD Xôi Lạc 90phut #1 VN" />
<meta name="twitter:description" content="Xoilac TV cung cấp link xem bóng Äá trá»±c tuyến, trá»±c tiếp bóng Äá Xôi Lạc TV hôm nay giải Ngoại Hạng Anh, Euro, Bundesliga, VÄQG Tây Ban Nha,..." />
<meta name="twitter:image" content="https://cdn.adminxltvcul.com/wp-content/uploads/2025/07/logo-squared.jpg" />
<meta name="twitter:label1" content="ÄÆ°á»£c viết bá»i" />
<meta name="twitter:data1" content="VÅ© Khắc Tiá»p" />
<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-pro">{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://nexhire.io/#organization","name":"Xoilac TV","logo":{"@type":"ImageObject","@id":"https://nexhire.io/#logo","url":"https://cdn.xoilac88xg.cc/wp-content/uploads/2025/07/logo-squared.jpg","contentUrl":"https://cdn.xoilac88xg.cc/wp-content/uploads/2025/07/logo-squared.jpg","caption":"Xoilac TV Tr\u1ef1c Ti\u1ebfp B\u00f3ng \u0110\u00e1 90phut HD - TTBD X\u00f4i L\u1ea1c #1 VN","inLanguage":"vi","width":"1080","height":"1080"}},{"@type":"WebSite","@id":"https://nexhire.io/#website","url":"https://nexhire.io","name":"Xoilac TV Tr\u1ef1c Ti\u1ebfp B\u00f3ng \u0110\u00e1 90phut HD - TTBD X\u00f4i L\u1ea1c #1 VN","alternateName":"Xoilac TV Tr\u1ef1c Ti\u1ebfp B\u00f3ng \u0110\u00e1 90phut HD - TTBD X\u00f4i L\u1ea1c #1 VN","publisher":{"@id":"https://nexhire.io/#organization"},"inLanguage":"vi","potentialAction":{"@type":"SearchAction","target":"https://nexhire.io/?s={search_term_string}","query-input":"required name=search_term_string"}},{"@type":"ImageObject","@id":"https://cdn.adminxltvcul.com/wp-content/uploads/2025/07/logo-squared.jpg","url":"https://cdn.adminxltvcul.com/wp-content/uploads/2025/07/logo-squared.jpg","width":"1080","height":"1080","inLanguage":"vi"},{"@type":"WebPage","@id":"https://nexhire.io#webpage","url":"https://nexhire.io","name":"XoilacTV Tr\u1ef1c Ti\u1ebfp B\u00f3ng \u0110\u00e1 24/24 - TTBD X\u00f4i L\u1ea1c 90phut #1 VN","datePublished":"2025-06-22T18:41:07+07:00","dateModified":"2026-05-28T00:24:43+07:00","about":{"@id":"https://nexhire.io/#organization"},"isPartOf":{"@id":"https://nexhire.io/#website"},"primaryImageOfPage":{"@id":"https://cdn.adminxltvcul.com/wp-content/uploads/2025/07/logo-squared.jpg"},"inLanguage":"vi"},{"@type":"Person","@id":"https://nexhire.io/author/vukhactiep","name":"V\u0169 Kh\u1eafc Ti\u1ec7p","url":"https://nexhire.io/author/vukhactiep","image":{"@type":"ImageObject","@id":"https://secure.gravatar.com/avatar/e9ea79398b3732fed96bb1f046bff4b79955e21fc32ffe18aed3c845775311d1?s=96&d=mm&r=g","url":"https://secure.gravatar.com/avatar/e9ea79398b3732fed96bb1f046bff4b79955e21fc32ffe18aed3c845775311d1?s=96&d=mm&r=g","caption":"V\u0169 Kh\u1eafc Ti\u1ec7p","inLanguage":"vi"},"worksFor":{"@id":"https://nexhire.io/#organization"}},{"@type":"Article","headline":"XoilacTV Tr\u1ef1c Ti\u1ebfp B\u00f3ng \u0110\u00e1 24/24 - TTBD X\u00f4i L\u1ea1c 90phut #1 VN","keywords":"xoilac tv","datePublished":"2025-06-22T18:41:07+07:00","dateModified":"2026-05-28T00:24:43+07:00","author":{"@id":"https://nexhire.io/author/vukhactiep","name":"V\u0169 Kh\u1eafc Ti\u1ec7p"},"publisher":{"@id":"https://nexhire.io/#organization"},"description":"Xoilac TV cung c\u1ea5p link xem b\u00f3ng \u0111\u00e1 tr\u1ef1c tuy\u1ebfn, tr\u1ef1c ti\u1ebfp b\u00f3ng \u0111\u00e1 X\u00f4i L\u1ea1c TV h\u00f4m nay gi\u1ea3i Ngo\u1ea1i H\u1ea1ng Anh, Euro, Bundesliga, V\u0110QG T\u00e2y Ban Nha,...","name":"XoilacTV Tr\u1ef1c Ti\u1ebfp B\u00f3ng \u0110\u00e1 24/24 - TTBD X\u00f4i L\u1ea1c 90phut #1 VN","@id":"https://nexhire.io#richSnippet","isPartOf":{"@id":"https://nexhire.io#webpage"},"image":{"@id":"https://cdn.adminxltvcul.com/wp-content/uploads/2025/07/logo-squared.jpg"},"inLanguage":"vi","mainEntityOfPage":{"@id":"https://nexhire.io#webpage"}}]}</script>
<!-- /Plugin SEO WordPress Rank Math -->
<link rel='dns-prefetch' href='//cdn.nexhire.io' />
<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.nexhire.io\/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.nexhire.io/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='ez-toc-css' href='https://cdn.nexhire.io/wp-content/plugins/easy-table-of-contents/assets/css/screen.min.css?ver=2.0.74' type='text/css' media='all' />
<style id='ez-toc-inline-css' type='text/css'>
div#ez-toc-container .ez-toc-title {font-size: 120%;}div#ez-toc-container .ez-toc-title {font-weight: 500;}div#ez-toc-container ul li , div#ez-toc-container ul li a {font-size: 95%;}div#ez-toc-container ul li , div#ez-toc-container ul li a {font-weight: 500;}div#ez-toc-container nav ul ul li {font-size: 90%;}
.ez-toc-container-direction {direction: ltr;}.ez-toc-counter ul{counter-reset: item ;}.ez-toc-counter nav ul li a::before {content: counters(item, '.', decimal) '. ';display: inline-block;counter-increment: item;flex-grow: 0;flex-shrink: 0;margin-right: .2em; float: left; }.ez-toc-widget-direction {direction: ltr;}.ez-toc-widget-container ul{counter-reset: item ;}.ez-toc-widget-container nav ul li a::before {content: counters(item, '.', decimal) '. ';display: inline-block;counter-increment: item;flex-grow: 0;flex-shrink: 0;margin-right: .2em; float: left; }
</style>
<link rel='stylesheet' id='main-style-css' href='https://cdn.nexhire.io/wp-content/themes/cakhiatv/style.css?ver=6.8.1' type='text/css' media='all' />
<script type="text/javascript" src="https://cdn.nexhire.io/wp-content/wp-includes/js/jquery/jquery.min.js?ver=3.7.1" id="jquery-core-js"></script>
<script type="text/javascript" src="https://cdn.nexhire.io/wp-content/wp-includes/js/jquery/jquery-migrate.min.js?ver=3.4.1" id="jquery-migrate-js"></script>
<link rel="https://api.w.org/" href="https://nexhire.io/wp-json/" /><link rel="alternate" title="JSON" type="application/json" href="https://nexhire.io/wp-json/wp/v2/pages/1060" /><link rel="EditURI" type="application/rsd+xml" title="RSD" href="https://nexhire.io/xmlrpc.php?rsd" />
<meta name="generator" content="WordPress 6.8.1" />
<link rel='shortlink' href='https://nexhire.io/' />
<link rel="alternate" title="oNhúng (JSON)" type="application/json+oembed" href="https://nexhire.io/wp-json/oembed/1.0/embed?url=https%3A%2F%2Fnexhire.io%2F" />
<link rel="alternate" title="oNhúng (XML)" type="text/xml+oembed" href="https://nexhire.io/wp-json/oembed/1.0/embed?url=https%3A%2F%2Fnexhire.io%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>
<!-- 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>
<!-- Google tag (gtag.js) -->
<script async src="https://www.googletagmanager.com/gtag/js?id=G-5HF67MKNY8"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'G-5HF67MKNY8');
</script>
</head>
<body>
<!-- Header -->
<header class="header">
<div class="container">
<div class="header__inner">
<a href="/" class="logo">
<img src="/wp-content/uploads/2025/06/logo-xoilac.png" alt="Xoilac TV" style="max-height: 50px"/>
</a>
<div style="display: flex; align-items: center">
<nav class="nav">
<button class="nav__toggle">
<img src="https://cdn.nexhire.io/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">TRANG CHỦ</a></li><li class="nav__item"><a href="https://nexhire.io/lich-thi-dau" class="">Lá»CH THI ÄẤU</a></li><li class="nav__item"><a href="https://nexhire.io/bang-xep-hang" class="">BẢNG XẾP HẠNG</a></li><li class="nav__item"><a href="https://nexhire.io/ket-qua-bong-da" class="">KẾT QUẢ BÃNG ÄÃ</a></li><li class="nav__item"><a href="https://nexhire.io/nhan-dinh" class="">NHẬN Äá»NH</a></li><li class="nav__item"><a href="https://nexhire.io/tin-tuc" class="">TIN TỨC</a></li> </ul>
</nav>
<div class="header__buttons">
<a href="https://refvsbf.com/" 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">
<!-- Hero Section -->
<section class="hero">
<div class="container">
<div class="hero__content">
<h1 class="text-uppercase">
Xoilac TV Trá»±c Tiếp Bóng Äá #1 VN - Xem Xôi Lạc 90phut HD
</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.nexhire.io/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.nexhire.io/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.nexhire.io/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.nexhire.io/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.nexhire.io/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.nexhire.io/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.nexhire.io/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.nexhire.io/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="">
<div class="sports-filter__button-icon">
<img src="https://cdn.nexhire.io/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="">
<div class="sports-filter__button-icon">
<img
src="https://cdn.nexhire.io/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">
<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">
<div id="ez-toc-container" class="ez-toc-v2_0_74 counter-hierarchy ez-toc-counter ez-toc-grey ez-toc-container-direction">
<div class="ez-toc-title-container">
<p class="ez-toc-title" style="cursor:inherit">Table of Contents</p>
<span class="ez-toc-title-toggle"><a href="#" class="ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle" aria-label="Toggle Table of Content"><span class="ez-toc-js-icon-con"><span class=""><span class="eztoc-hide" style="display:none;">Toggle</span><span class="ez-toc-icon-toggle-span"><svg style="fill: #999;color:#999" xmlns="https://www.w3.org/2000/svg" class="list-377408" width="20px" height="20px" viewBox="0 0 24 24" fill="none"><path d="M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z" fill="currentColor"></path></svg><svg style="fill: #999;color:#999" class="arrow-unsorted-368013" xmlns="https://www.w3.org/2000/svg" width="10px" height="10px" viewBox="0 0 24 24" version="1.2" baseProfile="tiny"><path d="M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z"/></svg></span></span></span></a></span></div>
<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-1" href="#Gioi_thieu_ve_Xoilac_TV_%E2%80%93_Truc_tiep_bong_da_HD_1_hien_nay" >Giá»i thiá»u vá» Xoilac TV – Trá»±c tiếp bóng Äá HD #1 hiá»n nay</a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class="ez-toc-link ez-toc-heading-2" href="#Lich_su_hinh_thanh_cua_Xoilac_TV" >Lá»ch sá» hình thà nh cá»§a Xoilac TV</a></li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class="ez-toc-link ez-toc-heading-3" href="#Tam_nhin_va_muc_tieu_phat_trien_cua_Xoilac_TV" >Tầm nhìn và mục tiêu phát triá»n cá»§a Xoilac TV</a></li></ul></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-4" href="#Xoilac_TV_phat_bong_da_truc_tuyen_o_cac_giai_dau_nao" >Xoilac TV phát bóng Äá trá»±c tuyến á» các giải Äấu nà o?</a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class="ez-toc-link ez-toc-heading-5" href="#Ngoai_Hang_Anh_%E2%80%93_English_Premier_League" >Ngoại Hạng Anh – English Premier League</a></li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class="ez-toc-link ez-toc-heading-6" href="#Cac_giai_dau_VDQG_hang_dau_Chau_Au_%E2%80%93_La_Liga_Bundesliga_Serie_A_Ligue_1" >Các giải Äấu VÄQG hà ng Äầu Châu Ãu – La Liga, Bundesliga, Serie A, Ligue 1</a></li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class="ez-toc-link ez-toc-heading-7" href="#Champions_League_%E2%80%93_Cup_C1_Chau_Au" >Champions League – Cúp C1 Châu Ãu</a></li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class="ez-toc-link ez-toc-heading-8" href="#World_Cup_%E2%80%93_Giai_dau_hap_dan_nhat_hanh_tinh" >World Cup – Giải Äấu hấp dẫn nhất hà nh tinh</a></li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class="ez-toc-link ez-toc-heading-9" href="#Bong_da_Viet_Nam_Vo_dich_quoc_gia_va_DTQG" >Bóng Äá Viá»t Nam (Vô Äá»ch quá»c gia và ÄTQG)</a></li></ul></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-10" href="#Uu_diem_khi_xem_truc_tiep_bong_da_tai_Xoilac_TV" >Ưu Äiá»m khi xem trá»±c tiếp bóng Äá tại Xoilac TV</a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class="ez-toc-link ez-toc-heading-11" href="#Hinh_anh_Full_HD_am_thanh_song_dong" >Hình ảnh Full HD, âm thanh sá»ng Äá»ng</a></li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class="ez-toc-link ez-toc-heading-12" href="#Doi_ngu_BLV_soi_noi_am_hieu_bong_da" >Äá»i ngÅ© BLV sôi ná»i, am hiá»u bóng Äá</a></li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class="ez-toc-link ez-toc-heading-13" href="#Duong_truyen_on_dinh_khong_giat_lag" >ÄÆ°á»ng truyá»n á»n Äá»nh, không giáºt lag</a></li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class="ez-toc-link ez-toc-heading-14" href="#Hoan_toan_mien_phi_khong_can_tao_tai_khoan" >Hoà n toà n miá»
n phÃ, không cần tạo tà i khoản</a></li></ul></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-15" href="#Cac_chuyen_muc_huu_ich_khac_tai_Xoilac_TV" >Các chuyên mục hữu Ãch khác tại Xoilac TV</a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class="ez-toc-link ez-toc-heading-16" href="#Lich_thi_dau_bong_da" >Lá»ch thi Äấu bóng Äá</a></li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class="ez-toc-link ez-toc-heading-17" href="#Bang_xep_hang_bong_da" >Bảng xếp hạng bóng Äá</a></li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class="ez-toc-link ez-toc-heading-18" href="#Ket_qua_bong_da_moi_nhat" >Kết quả bóng Äá má»i nhất</a></li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class="ez-toc-link ez-toc-heading-19" href="#Nhan_dinh_truoc_tran" >Nháºn Äá»nh trưá»c tráºn</a></li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class="ez-toc-link ez-toc-heading-20" href="#Cap_nhat_tin_tuc_bong_da_247" >Cáºp nháºt tin tức bóng Äá 24/7</a></li></ul></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-21" href="#Cach_xem_truc_tiep_bong_da_tai_Xoilac_TV" >Cách xem trá»±c tiếp bóng Äá tại Xoilac TV</a></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-22" href="#So_sanh_Xoilac_TV_va_cac_nen_tang_truc_tiep_bong_da_khac" >So sánh Xoilac TV và các ná»n tảng trá»±c tiếp bóng Äá khác</a></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-23" href="#Cau_hoi_thuong_gap_doi_voi_Xoilac_TV" >Câu há»i thưá»ng gặp Äá»i vá»i Xoilac TV</a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class="ez-toc-link ez-toc-heading-24" href="#Xoilac_TV_co_mien_phi_khong_Co_can_dang_ky_tai_khoan_de_xem_khong" >Xoilac TV có miá»
n phà không? Có cần ÄÄng ký tà i khoản Äá» xem không?</a></li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class="ez-toc-link ez-toc-heading-25" href="#Xoilac_TV_co_an_toan_khong_Xem_o_day_co_bi_dinh_virus_khong" >Xoilac TV có an toà n không? Xem á» Äây có bá» dÃnh virus không?</a></li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class="ez-toc-link ez-toc-heading-26" href="#Xoilac_TV_co_xem_duoc_tren_dien_thoai_khong_Ho_tro_nhung_thiet_bi_nao" >Xoilac TV có xem ÄÆ°á»£c trên Äiá»n thoại không? Há» trợ những thiết bá» nà o?</a></li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class="ez-toc-link ez-toc-heading-27" href="#Xoilac_TV_co_nhung_giai_dau_nao_Co_chieu_day_du_cac_tran_khong" >Xoilac TV có những giải Äấu nà o? Có chiếu Äầy Äá»§ các tráºn không?</a></li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class="ez-toc-link ez-toc-heading-28" href="#Lam_gi_neu_dang_xem_Xoilac_TV_ma_bi_giat_lag_hoac_khong_xem_duoc" >Là m gì nếu Äang xem Xoilac TV mà bá» giáºt, lag hoặc không xem ÄÆ°á»£c?</a></li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class="ez-toc-link ez-toc-heading-29" href="#Xoilac_TV_co_binh_luan_tieng_Viet_cho_moi_tran_dau_khong" >Xoilac TV có bình luáºn tiếng Viá»t cho má»i tráºn Äấu không?</a></li></ul></li></ul></nav></div>
<h2 class="wp-block-heading"><span class="ez-toc-section" id="Gioi_thieu_ve_Xoilac_TV_%E2%80%93_Truc_tiep_bong_da_HD_1_hien_nay"></span>Giá»i thiá»u vá» Xoilac TV – Trá»±c tiếp bóng Äá HD #1 hiá»n nay<span class="ez-toc-section-end"></span></h2>
<p><strong><a href="/">Xoilac</a></strong> TV (hay còn ÄÆ°á»£c biết Äến vá»i tên gá»i Xôi Lạc TV, Xoi Lac TV, XoilacTV) là má»t ná»n tảng website xem <strong><a href="/">trá»±c tiếp bóng Äá</a></strong> trá»±c tuyến hà ng Äầu tại Viá»t Nam hiá»n nay. Äây là Äá»a chá» quen thuá»c giúp ngưá»i hâm má» theo dõi các tráºn cầu Äá»nh cao vá»i chất lượng HD hoà n toà n miá»
n phÃ. Trang web ra Äá»i vá»i sứ má»nh âmang sân cá» Äến gần hÆ¡n vá»i ngưá»i hâm má»â, trá» thà nh cá»ng Äá»ng gắn kết những trái tim Äam mê môn thá» thao vua. </p>
<p>Xoilac TV ná»i báºt nhá» hình ảnh sắc nét, ÄÆ°á»ng truyá»n á»n Äá»nh, bình luáºn tiếng Viá»t cuá»n hút và Äặc biá»t không thu bất kỳ khoản phà hay yêu cầu ÄÄng ký tà i khoản. NÆ¡i Äây không chá» ÄÆ¡n thuần là kênh xem bóng Äá, mà còn là không gian kết ná»i và chia sẻ cá»§a fan bóng Äá trên khắp cả nưá»c.</p>
<figure class="wp-block-image size-large"><img decoding="async" src="https://img.lightshot.app/r6GHkCt4Q4CD3FIrk0MwVQ.jpg" alt=""/></figure>
<h3 class="wp-block-heading"><span class="ez-toc-section" id="Lich_su_hinh_thanh_cua_Xoilac_TV"></span>Lá»ch sá» hình thà nh cá»§a Xoilac TV<span class="ez-toc-section-end"></span></h3>
<p>Xôi Lạc TV khá»i nguá»n từ má»t nhóm nhá» những ngưá»i Äam mê bóng Äá và công nghá», vá»i mong muá»n mang Äến trải nghiá»m xem bóng Äá trá»±c tuyến miá»
n phÃ, chất lượng cao cho cá»ng Äá»ng yêu thá» thao. Ban Äầu, Xoilac chá» ÄÆ¡n giản là nÆ¡i chia sẻ các ÄÆ°á»ng link xem những tráºn Äấu hấp dẫn cho bạn bè. Nhưng nhá» sá»± lan tá»a mạnh mẽ từ cá»ng Äá»ng ngưá»i hâm má», ná»n tảng nà y nhanh chóng phát triá»n vượt ngoà i kỳ vá»ng.</p>
<p>Nháºn thấy nhu cầu xem bóng Äá trá»±c tuyến tại Viá»t Nam tÄng nhanh trong thá»i Äại sá», Äá»i ngÅ© sáng láºp Xoilac TV Äã Äầu tư bà i bản hÆ¡n và o há» thá»ng máy chá»§, giao diá»n ngưá»i dùng và chất lượng ná»i dung. Từ viá»c váºn hà nh thá»§ công vá»i nguá»n lá»±c hạn chế, trang web từng bưá»c nâng cấp công nghá» phát sóng, cải thiá»n Äá» phân giải hình ảnh, tÄng tá»c Äá» tải và tá»i ưu khả nÄng tương thÃch trên má»i thiết bá» (máy tÃnh, smartphone, máy tÃnh bảng…).</p>
<h3 class="wp-block-heading"><span class="ez-toc-section" id="Tam_nhin_va_muc_tieu_phat_trien_cua_Xoilac_TV"></span>Tầm nhìn và mục tiêu phát triá»n cá»§a Xoilac TV<span class="ez-toc-section-end"></span></h3>
<p>Ngay từ những ngà y Äầu thà nh láºp, Xoilac TV Äã xác Äá»nh kim chá» nam hoạt Äá»ng rõ rà ng: âLấy ngưá»i xem là m trung tâm â Trải nghiá»m cá»§a ngưá»i dùng là mục tiêu cá»t lõiâ. Tầm nhìn cá»§a Xoilac TV là trá» thà nh ná»n tảng xem bóng Äá trá»±c tiếp uy tÃn, bá»n vững vÃ ÄÆ°á»£c tin dùng sá» má»t tại Viá»t Nam. Äá» Äạt ÄÆ°á»£c Äiá»u Äó, Xoilac luôn Äặt trá»ng tâm và o viá»c hoà n thiá»n dá»ch vụ, lắng nghe góp ý từ ngưá»i dùng và không ngừng Äá»i má»i công nghá».</p>
<p>Vá»i phương châm hoạt Äá»ng âNhanh â Sạch â Sắc â Miá»
n phÃâ, má»i hoạt Äá»ng váºn hà nh cá»§a Xoilac TV xoay quanh viá»c tá»i ưu hóa trải nghiá»m cá»§a ngưá»i hâm má». Cụ thá», trang web Äảm bảo cung cấp ÄÆ°á»ng link phát sóng an toà n tuyá»t Äá»i (không chứa mã Äá»c, không bá» chèn quảng cáo phản cảm), tá»c Äá» tải mượt mà , hình ảnh sắc nét là tiêu chuẩn bắt buá»c cho má»i tráºn Äấu. Song song vá»i yếu tá» kỹ thuáºt, Xoilac TV cÅ©ng Äầu tư mạnh và o yếu tá» con ngưá»i â từ Äá»i ngÅ© bình luáºn viên, biên táºp viên tin tức Äến các chuyên gia soi kèo â nhằm mang Äến ná»i dung bóng Äá hấp dẫn, chÃnh xác và chuyên sâu nhất. </p>
<p>Mục tiêu phát triá»n dà i hạn cá»§a Xoilac TV là má» rá»ng phạm vi phát sóng, phá»§ sóng má»i giải Äấu từ lá»n Äến nhá», trá» thà nh ná»n tảng xem thá» thao toà n diá»n cho ngưá»i hâm má» trên khắp thế giá»i, trong khi vẫn duy trì tiêu chà miá»
n phà 100% cho má»i ngưá»i dùng.</p>
<h2 class="wp-block-heading"><span class="ez-toc-section" id="Xoilac_TV_phat_bong_da_truc_tuyen_o_cac_giai_dau_nao"></span>Xoilac TV phát bóng Äá trá»±c tuyến á» các giải Äấu nà o?<span class="ez-toc-section-end"></span></h2>
<p>Vá»i tham vá»ng phục vụ trá»n vẹn nhu cầu xem bóng Äá cá»§a khán giả, Xoilac TV phát sóng hầu hết tất cả các giải Äấu bóng Äá hấp dẫn nhất, từ Äấu trưá»ng quá»c tế Äến các giải trong nưá»c. Dù bạn yêu thÃch những tráºn cầu Äá»nh cao tại châu Ãu hay dõi theo bưá»c chân cá»§a Äá»i tuyá»n Viá»t Nam, Xoilac TV Äá»u có sẵn ÄÆ°á»ng link xem trá»±c tiếp chất lượng cao. Dưá»i Äây là những giải Äấu tiêu biá»u mà Xoilac TV Äang phát sóng:</p>
<h3 class="wp-block-heading"><span class="ez-toc-section" id="Ngoai_Hang_Anh_%E2%80%93_English_Premier_League"></span>Ngoại Hạng Anh – English Premier League<span class="ez-toc-section-end"></span></h3>
<p>Premier League (Ngoại Hạng Anh) â giải Äấu bóng Äá hấp dẫn nhất hà nh tinh â luôn có mặt Äầy Äá»§ trên Xoilac TV. Äây là nÆ¡i quy tụ các câu lạc bá» tên tuá»i hà ng Äầu nưá»c Anh như Manchester United, Manchester City, Liverpool, Chelsea, Arsenal, Tottenham… Má»i cuá»i tuần, ngưá»i hâm má» sẽ ÄÆ°á»£c thưá»ng thức các tráºn cầu nảy lá»a cá»§a Ngoại Hạng Anh vá»i chất lượng hình ảnh Full HD, âm thanh sá»ng Äá»ng cùng phần bình luáºn tiếng Viá»t cuá»ng nhiá»t. Xoilac TV hiá»u rằng Ngoại Hạng Anh có sức hút mãnh liá»t, vì váºy trang web luôn cáºp nháºt Äá»§ má»i tráºn Äấu cá»§a giải nà y, bao gá»m cả các tráºn Äấu sá»m, tráºn Äấu muá»n và những Äại chiến Super Sunday, giúp bạn không bá» lỡ bất kỳ khoảnh khắc ká»ch tÃnh nà o.</p>
<figure class="wp-block-image size-large is-resized"><img decoding="async" src="https://img.lightshot.app/7qtMRzwmQyysHTLkLry_Cw.jpg" alt="" style="aspect-ratio:1;width:840px;height:auto"/></figure>
<h3 class="wp-block-heading"><span class="ez-toc-section" id="Cac_giai_dau_VDQG_hang_dau_Chau_Au_%E2%80%93_La_Liga_Bundesliga_Serie_A_Ligue_1"></span>Các giải Äấu VÄQG hà ng Äầu Châu Ãu – La Liga, Bundesliga, Serie A, Ligue 1<span class="ez-toc-section-end"></span></h3>
<p>Bên cạnh Ngoại Hạng Anh, Xoilac TV còn phát sóng Äầy Äá»§ các giải vô Äá»ch quá»c gia hà ng Äầu châu Ãu khác, bao gá»m: La Liga (Tây Ban Nha), Bundesliga (Äức), Serie A (Ã) và Ligue 1 (Pháp). Má»i giải Äấu nà y Äá»u có sức hấp dẫn và lượng ngưá»i hâm má» Äông Äảo riêng, và Xoilac cam kết mang Äến trải nghiá»m xem trá»n vẹn nhất cho từng giải:</p>
<ul class="wp-block-list">
<li><strong>La Liga</strong>: Theo dõi những bưá»c chân ma thuáºt cá»§a Real Madrid, Barcelona, Atletico Madrid… trong cuá»c Äua Äến ngôi vô Äá»ch Tây Ban Nha. Giải Äấu nà y mang Äáºm chất kỹ thuáºt và sá»± kình Äá»ch lá»ch sá», má»i tuần Äá»u có các tráºn El Clásico, derby Madrid hay những mà n so tà i nảy lá»a khác, tất cả Äá»u ÄÆ°á»£c trá»±c tiếp trên Xoilac TV vá»i bình luáºn tiếng Viá»t hấp dẫn.</li>
</ul>
<ul class="wp-block-list">
<li><strong>Bundesliga</strong>: Äắm chìm trong không khà sôi Äá»ng cá»§a bóng Äá Äức vá»i các tráºn Äấu cá»§a Bayern Munich, Borussia Dortmund, RB Leipzig… Bundesliga ná»i tiếng vá»i lá»i chÆ¡i tấn công cá»ng hiến và khán giả cuá»ng nhiá»t. Xoilac TV mang Äến cho bạn trá»n bá» các tráºn Äấu Bundesliga má»i vòng, hình ảnh rõ nét và cáºp nháºt bảng xếp hạng ngay sau má»i vòng Äấu.</li>
</ul>
<ul class="wp-block-list">
<li><strong>Serie A</strong>: Hòa mình cùng không khà cuá»ng nhiá»t cá»§a bóng Äá Ã, nÆ¡i những tên tuá»i lẫy lừng như AC Milan, Inter Milan, Juventus, AS Roma… so tà i. Serie A là má»t trong những giải Äấu lâu Äá»i và già u tÃnh chiến thuáºt, má»i tráºn cầu Äá»nh cao Äá»u có trên Xoilac vá»i chất lượng phát sóng tá»t nhất, giúp ngưá»i xem cảm nháºn trá»n vẹn vẻ Äẹp cá»§a Calcio Ã.</li>
</ul>
<ul class="wp-block-list">
<li><strong>Ligue 1</strong>: Theo dõi bưá»c chạy cá»§a các ngôi sao hà ng Äầu thế giá»i tại giải bóng Äá vô Äá»ch quá»c gia Pháp. Sá»± vươn lên mạnh mẽ cá»§a Paris Saint-Germain cùng dà n sao như Mbappé, Neymar, Messi (trưá»c Äây) Äã là m Ligue 1 hấp dẫn hÆ¡n bao giá» hết. Xoilac TV cáºp nháºt Äầy Äá»§ các tráºn Äấu Ligue 1 hà ng tuần, giúp khán giả Viá»t Nam dá»
dà ng theo dõi sá»± cạnh tranh Äang ngà y cà ng nóng lên tại giải Äấu nà y.</li>
</ul>
<figure class="wp-block-image size-large"><img decoding="async" src="https://img.lightshot.app/ALOw_cMMStqKf2k8XgH3yg.jpg" alt=""/></figure>
<h3 class="wp-block-heading"><span class="ez-toc-section" id="Champions_League_%E2%80%93_Cup_C1_Chau_Au"></span>Champions League – Cúp C1 Châu Ãu<span class="ez-toc-section-end"></span></h3>
<p>UEFA Champions League (Cúp C1 châu Ãu) là giải Äấu cấp câu lạc bá» danh giá nhất thế giá»i, nÆ¡i há»i tụ những Äá»i bóng mạnh nhất châu Ãu tranh tà i Äá» già nh chiếc cúp bạc danh giá. Hiá»u ÄÆ°á»£c tầm quan trá»ng cá»§a Champions League Äá»i vá»i ngưá»i hâm má», Xoilac TV phát sóng toà n bá» các tráºn Äấu Cúp C1 từ vòng bảng, vòng knock-out cho Äến tráºn chung kết. </p>
<p>Bạn có thá» theo dõi những cuá»c so tà i Äá»nh cao giữa các ông lá»n như Real Madrid, Barcelona, Bayern Munich, Liverpool, Manchester City, PSG, Juventus… vá»i chất lượng hình ảnh sắc nét và phần bình luáºn tiếng Viá»t sôi Äá»ng. Má»i Äêm Champions League trên Xoilac TV Äá»u mang Äến cho bạn bầu không khà cuá»ng nhiá»t như Äang ngá»i giữa khán Äà i sân cá» châu Ãu thá»±c thụ.</p>
<h3 class="wp-block-heading"><span class="ez-toc-section" id="World_Cup_%E2%80%93_Giai_dau_hap_dan_nhat_hanh_tinh"></span>World Cup – Giải Äấu hấp dẫn nhất hà nh tinh<span class="ez-toc-section-end"></span></h3>
<p>World Cup â ngà y há»i bóng Äá lá»n nhất hà nh tinh â chắc chắn không thá» vắng mặt trên Xoilac TV. Giải Äấu nà y diá»
n ra 4 nÄm má»t lần, quy tụ tất cả những Äá»i tuyá»n quá»c gia mạnh nhất và các siêu sao hà ng Äầu thế giá»i. Xoilac TV tá»± hà o là kênh trá»±c tiếp Äầy Äá»§ má»i tráºn Äấu cá»§a World Cup, từ vòng bảng cho Äến tráºn chung kết. Ngưá»i hâm má» sẽ ÄÆ°á»£c hòa mình và o lá»
há»i bóng Äá toà n cầu, xem những cuá»c Äá»i Äầu kinh Äiá»n giữa các Äá»i tuyá»n truyá»n thá»ng như Brazil, Äức, Ã, Argentina, Pháp, Anh… cÅ©ng như chứng kiến hà nh trình kỳ diá»u cá»§a những Äá»i bóng ângá»±a ôâ. Tất cả các tráºn Äấu World Cup trên Xoilac Äá»u ÄÆ°á»£c truyá»n tải Äá»ng bá» vá»i lá»ch thi Äấu thá»±c, không trá»
nhá»p, Äảm bảo bạn thưá»ng thức trá»n vẹn từng giây phút cá»§a giải Äấu hấp dẫn nhất hà nh tinh.</p>
<h3 class="wp-block-heading"><span class="ez-toc-section" id="Bong_da_Viet_Nam_Vo_dich_quoc_gia_va_DTQG"></span>Bóng Äá Viá»t Nam (Vô Äá»ch quá»c gia và ÄTQG)<span class="ez-toc-section-end"></span></h3>
<p>Xoilac TV Äặc biá»t quan tâm Äến ngưá»i hâm má» bóng Äá Viá»t Nam khi cung cấp Äầy Äá»§ các tráºn Äấu có sá»± góp mặt cá»§a Äá»i tuyá»n Quá»c gia Viá»t Nam cÅ©ng như các giải Äấu trong khu vá»±c và quá»c ná»i. Dù Äó là những tráºn cầu Äá»nh cao cá»§a ÄT Viá»t Nam tại AFF Cup, SEA Games, Vòng loại World Cup khu vá»±c châu Ã, hay các giải trẻ như U23 châu Ã, Xoilac TV Äá»u tưá»ng thuáºt trá»±c tiếp vá»i chất lượng tá»t và bình luáºn tiếng Viá»t. </p>
<p>Không những thế, trang web còn phát sóng cả giải V-League (giải VÄQG Viá»t Nam) và Cúp Quá»c Gia, giúp ngưá»i xem trong nưá»c không bá» lỡ những bưá»c tiến cá»§a câu lạc bá» và cầu thá»§ mình yêu thÃch. Nhá» váºy, Xoilac TV trá» thà nh cầu ná»i ÄÆ°a bóng Äá nưá»c nhà Äến gần hÆ¡n vá»i khán giả, lan tá»a niá»m Äam mê bóng Äá Viá»t Äến cá»ng Äá»ng fan rá»ng lá»n.</p>
<figure class="wp-block-image size-large"><img decoding="async" src="https://img.lightshot.app/ky94z1jiQb6W9zo8LAv2JA.png" alt=""/></figure>
<h2 class="wp-block-heading"><span class="ez-toc-section" id="Uu_diem_khi_xem_truc_tiep_bong_da_tai_Xoilac_TV"></span>Ưu Äiá»m khi xem trá»±c tiếp bóng Äá tại Xoilac TV<span class="ez-toc-section-end"></span></h2>
<p>Lá»±a chá»n xem bóng Äá trá»±c tuyến trên XoilacTV, ngưá»i hâm má» sẽ nháºn ÄÆ°á»£c rất nhiá»u lợi Ãch vượt trá»i so vá»i các kênh xem khác. Dưá»i Äây là những ưu Äiá»m ná»i báºt khiến trải nghiá»m xem bóng Äá trên Xoilac TV trá» nên ÄÆ°á»£c yêu thÃch nhất:</p>
<h3 class="wp-block-heading"><span class="ez-toc-section" id="Hinh_anh_Full_HD_am_thanh_song_dong"></span>Hình ảnh Full HD, âm thanh sá»ng Äá»ng<span class="ez-toc-section-end"></span></h3>
<p>Chất lượng phát sóng là yếu tá» ÄÆ°á»£c Xoilac TV ưu tiên hà ng Äầu. Tất cả các tráºn Äấu Äá»u ÄÆ°á»£c truyá»n tải vá»i Äá» phân giải Full HD (1080p) sắc nét, tháºm chà nhiá»u tráºn còn há» trợ Äá» phân giải lên Äến 2K hoặc 4K cho hình ảnh vô cùng chi tiết. Bên cạnh hình ảnh rõ nét, âm thanh trên Xoilac TV cÅ©ng ÄÆ°á»£c xá» lý chân thá»±c và sá»ng Äá»ng, mang Äến tiếng reo hò khán giả và tiếng bình luáºn rõ rà ng như tháºt. </p>
<p>Nhá» có công nghá» streaming tiên tiến và adaptive bitrate (tá»± Äiá»u chá»nh chất lượng theo ÄÆ°á»ng truyá»n), ngưá»i xem sẽ có cảm giác như Äang ngá»i trên khán Äà i sân váºn Äá»ng thá»±c thụ, khi từng pha bóng, từng tiếng còi và không khà sôi Äá»ng Äá»u ÄÆ°á»£c tái hiá»n sinh Äá»ng qua mà n hình.</p>
<h3 class="wp-block-heading"><span class="ez-toc-section" id="Doi_ngu_BLV_soi_noi_am_hieu_bong_da"></span>Äá»i ngÅ© BLV sôi ná»i, am hiá»u bóng Äá<span class="ez-toc-section-end"></span></h3>
<p>Má»t Äiá»m cá»ng lá»n khi xem bóng Äá trên Xoilac TV chÃnh là phần bình luáºn tiếng Viá»t miá»
n phà vá»i chất lượng cao. Trang web sá» hữu Äá»i ngÅ© bình luáºn viên (BLV) riêng, là những ngưá»i am hiá»u sâu sắc vá» bóng Äá và già u kinh nghiá»m tưá»ng thuáºt. Các BLV cá»§a Xoilac không chá» phân tÃch tráºn Äấu bằng kiến thức chuyên môn vững và ng, cáºp nháºt thông tin cầu thá»§, chiến thuáºt… mà còn truyá»n tải cảm xúc má»t cách sôi ná»i, nhiá»t huyết. </p>
<p>Giá»ng bình luáºn già u cảm xúc, Äôi lúc hà i hưá»c dà dá»m cá»§a các BLV giúp tÄng thêm tÃnh giải trà và cuá»n hút cho tráºn Äấu. Nhá» váºy, ngưá»i xem vừa nắm bắt ÄÆ°á»£c diá»
n biến tráºn bóng, vừa ÄÆ°á»£c hòa mình và o không khà sôi Äá»ng mà BLV mang lại.</p>
<h3 class="wp-block-heading"><span class="ez-toc-section" id="Duong_truyen_on_dinh_khong_giat_lag"></span>ÄÆ°á»ng truyá»n á»n Äá»nh, không giáºt lag<span class="ez-toc-section-end"></span></h3>
<p>Xoilac TV tá»± hà o sá» hữu há» thá»ng server vÃ ÄÆ°á»ng truyá»n hiá»n Äại, ÄÆ°á»£c tá»i ưu Äá» phục vụ lượng lá»n ngưá»i xem cùng lúc mà Ãt xảy ra tình trạng giáºt, lag. NhỠáp dụng công nghá» truyá»n dẫn tiên tiến và cÆ¡ sá» hạ tầng máy chá»§ Äặt tại nhiá»u nÆ¡i, các tráºn Äấu trên Xoilac luôn Äảm bảo tá»c Äá» mượt mà , á»n Äá»nh ngay cả trong giá» cao Äiá»m. Những hiá»n tượng gây khó chá»u như Äứng hình, nhòe hình hay bá» vÄng khá»i luá»ng trá»±c tiếp hầu như không xuất hiá»n. </p>
<h3 class="wp-block-heading"><span class="ez-toc-section" id="Hoan_toan_mien_phi_khong_can_tao_tai_khoan"></span>Hoà n toà n miá»
n phÃ, không cần tạo tà i khoản<span class="ez-toc-section-end"></span></h3>
<p>Má»t trong những lợi Ãch lá»n nhất khi xem bóng Äá tại Xoilac TV là dá»ch vụ hoà n toà n miá»
n phÃ. Ngưá»i xem không phải trả bất kỳ chi phà nà o Äá» truy cáºp tráºn Äấu, khác biá»t hoà n toà n vá»i má»t sá» ná»n tảng yêu cầu tà i khoản VIP hoặc tÃnh phà thuê bao hà ng tháng. Bạn không cần ÄÄng ký tà i khoản rưá»m rà â chá» viá»c truy cáºp website và chá»n tráºn muá»n xem là có thá» thưá»ng thức ngay láºp tức. Äiá»u nà y giúp trải nghiá»m xem bóng Äá trá» nên thuáºn tiá»n và nhanh chóng hÆ¡n bao giá» hết.</p>
<h2 class="wp-block-heading"><span class="ez-toc-section" id="Cac_chuyen_muc_huu_ich_khac_tai_Xoilac_TV"></span>Các chuyên mục hữu Ãch khác tại Xoilac TV<span class="ez-toc-section-end"></span></h2>
<p>Không chá» dừng lại á» viá»c phát sóng trá»±c tiếp bóng Äá miá»
n phÃ, Xoilac TV còn là má»t trang thông tin bóng Äá tá»ng hợp vá»i nhiá»u chuyên mục hữu Ãch. Äiá»u nà y biến Xoilac trá» thà nh ngôi nhà chung cho ngưá»i yêu bóng Äá â nÆ¡i bạn có thá» cáºp nháºt má»i thứ liên quan Äến môn thá» thao vua, từ lá»ch thi Äấu, kết quả cho Äến tin tức bên lá». Dưá»i Äây là các chuyên mục ná»i báºt mà Xoilac TV cung cấp:</p>
<h3 class="wp-block-heading"><span class="ez-toc-section" id="Lich_thi_dau_bong_da"></span>Lá»ch thi Äấu bóng Äá<span class="ez-toc-section-end"></span></h3>
<p>Chuyên mục <strong><a href="/lich-thi-dau">Lá»ch thi Äấu</a></strong> trên Xoilac TV cung cấp lá»ch bóng Äá hôm nay, ngà y mai và những ngà y sắp tá»i cá»§a tất cả các giải Äấu lá»n nhá». Lá»ch thi Äấu ÄÆ°á»£c sắp xếp khoa há»c theo từng giải và theo ngà y, giúp ngưá»i xem dá»
dà ng tra cứu thá»i gian diá»
n ra tráºn Äấu mình quan tâm. </p>
<p>Thông tin trong lá»ch thi Äấu rất chi tiết, bao gá»m: ngà y giá» bắt Äầu tráºn Äấu theo múi giá» Viá»t Nam, cặp Äá»i Äá»i Äầu, Äá»a Äiá»m (sân váºn Äá»ng tá» chức) và tháºm chà cáºp nháºt Äá»i hình dá»± kiến trưá»c tráºn</p>
<h3 class="wp-block-heading"><span class="ez-toc-section" id="Bang_xep_hang_bong_da"></span>Bảng xếp hạng bóng Äá<span class="ez-toc-section-end"></span></h3>
<p>Sau má»i loạt tráºn, chắc hẳn ngưá»i hâm má» Äá»u muá»n biết thứ hạng các Äá»i bóng cá»§a mình trên bảng tá»ng sắp. Hiá»u ÄÆ°á»£c Äiá»u Äó, Xoilac TV mang Äến chuyên mục Bảng xếp hạng (BXH) ÄÆ°á»£c cáºp nháºt nhanh chóng và chÃnh xác sau khi các tráºn Äấu kết thúc. </p>
<p>Tại Äây, bạn có thá» xem <strong><a href="/bang-xep-hang">bảng xếp hạng</a></strong> cá»§a má»i giải Äấu từ Ngoại Hạng Anh, La Liga, Serie A, Bundesliga, Ligue 1 cho Äến Champions League, Europa League, hay các giải Äấu quá»c tế và trong nưá»c. Thông tin BXH ÄÆ°á»£c trình bà y rõ rà ng vá»i Äầy Äá»§ các cá»t dữ liá»u quan trá»ng: vá» trà xếp hạng, sá» tráºn Äã Äấu, sá» tráºn thắng â hòa â thua, hiá»u sá» bà n thắng, Äiá»m sá» hiá»n tại. </p>
<h3 class="wp-block-heading"><span class="ez-toc-section" id="Ket_qua_bong_da_moi_nhat"></span>Kết quả bóng Äá má»i nhất<span class="ez-toc-section-end"></span></h3>
<p>Chuyên mục <strong><a href="/ket-qua-bong-da">Kết quả bóng Äá</a></strong> trên Xoilac TV cho phép ngưá»i dùng tra cứu kết quả cá»§a tất cả các tráºn Äấu vừa diá»
n ra trong ngà y và những ngà y trưá»c Äó. Ngay sau khi trá»ng tà i thá»i còi kết thúc tráºn, kết quả sẽ ÄÆ°á»£c Xoilac cáºp nháºt lên há» thá»ng má»t cách tá»c Äá» và chÃnh xác 100%. </p>
<p>Không chá» ÄÆ¡n thuần hiá»n thá» tá»· sá» cuá»i cùng, trang Kết quả còn cung cấp thông tin thá»ng kê chi tiết vá» tráºn Äấu: cầu thá»§ ghi bà n và phút ghi bà n, danh sách kiến tạo, sá» lượng thẻ và ng/thẻ Äá», sá» quả phạt góc, phạt Äá»n, tá»· lá» kiá»m soát bóng, sá» cú sút, v.v. Nhá» những dữ liá»u Äầy Äá»§ nà y, ngưá»i xem dù bá» lỡ tráºn Äấu vẫn có thá» hình dung lại diá»
n biến và Äánh giá ÄÆ°á»£c mà n trình diá»
n cá»§a hai Äá»i. </p>
<h3 class="wp-block-heading"><span class="ez-toc-section" id="Nhan_dinh_truoc_tran"></span>Nháºn Äá»nh trưá»c tráºn<span class="ez-toc-section-end"></span></h3>
<p>Äá»i vá»i những ngưá»i yêu thÃch phân tÃch và dá»± Äoán bóng Äá, chuyên mục <strong><a href="/nhan-dinh">Nháºn Äá»nh</a></strong> trưá»c tráºn trên Xoilac TV là nguá»n thông tin không thá» bá» qua. Tại Äây, Äá»i ngÅ© chuyên gia bóng Äá và chuyên gia soi kèo cá»§a Xoilac sẽ ÄÆ°a ra những bà i nháºn Äá»nh chuyên sâu cho các tráºn Äấu sắp diá»
n ra. </p>
<p>Ná»i dung nháºn Äá»nh rất Äa dạng và có chiá»u sâu, bao gá»m: Äánh giá tương quan lá»±c lượng giữa hai Äá»i (phong Äá» gần Äây, lá»ch sá» Äá»i Äầu, tình hình chấn thương, Äá»i hình dá»± kiến), phân tÃch chiến thuáºt mà má»i Äá»i có thỠáp dụng, những ngôi sao có thá» tạo Äá»t biến, và Äặc biá»t là dá»± Äoán kết quả tráºn Äấu. Các bà i nháºn Äá»nh ÄÆ°á»£c tá»ng hợp từ dữ liá»u thá»ng kê và góc nhìn chuyên môn, giúp ngưá»i xem có thêm thông tin tham khảo trưá»c khi tráºn Äấu bắt Äầu.</p>
<h3 class="wp-block-heading"><span class="ez-toc-section" id="Cap_nhat_tin_tuc_bong_da_247"></span>Cáºp nháºt tin tức bóng Äá 24/7<span class="ez-toc-section-end"></span></h3>
<p>Xoilac TV còn là má»t trang <strong><a href="/tin-tuc">tin tức bóng Äá</a></strong> 24/7 vá»i lượng thông tin phong phú ÄÆ°á»£c cáºp nháºt liên tục. Chuyên mục Tin tức bóng Äá tá»ng hợp những tin nóng há»i nhất vá» bóng Äá trong nưá»c và quá»c tế má»i ngà y, giúp ngưá»i hâm má» dá»
dà ng nắm bắt má»i diá»
n biến xung quanh trái bóng tròn. Bạn có thá» tìm thấy Äa dạng các tin bà i, từ tin chuyá»n nhượng (và dụ: các thương vụ Äình Äám, tin Äá»n mua bán cầu thá»§), tin vá» huấn luyá»n viên, thông tin bên lá» sân cá», cho Äến những bà i phá»ng vấn, phát ngôn Äáng chú ý. Äá»i ngÅ© biên táºp cá»§a Xoilac TV là m viá»c chÄm chá» Äá» Äảm bảo Äá» nhanh nhạy và chÃnh xác cá»§a tin tức. </p>
<p>Tóm lại, Xoilac TV không chá» là nÆ¡i xem bóng Äá trá»±c tiếp miá»
n phà mà còn cung cấp há» sinh thái thông tin Äầy Äá»§ cho ngưá»i yêu bóng Äá. Từ lá»ch thi Äấu, kết quả, bảng xếp hạng cho tá»i tin tức và nháºn Äá»nh, tất cả Äá»u có trên Xoilac, giúp bạn âmá»t chạmâ có ngay má»i thứ mình cần vá» bóng Äá.</p>
<h2 class="wp-block-heading"><span class="ez-toc-section" id="Cach_xem_truc_tiep_bong_da_tai_Xoilac_TV"></span>Cách xem trá»±c tiếp bóng Äá tại Xoilac TV<span class="ez-toc-section-end"></span></h2>
<p>Viá»c xem trá»±c tiếp bóng Äá trên Xoilac TV vô cùng ÄÆ¡n giản và thuáºn tiá»n, ngay cả vá»i những ngưá»i không rà nh vá» công nghá». Chá» vá»i và i bưá»c cÆ¡ bản, bạn Äã có thá» thưá»ng thức trá»n vẹn 90 phút tráºn Äấu mình mong Äợi. Dưá»i Äây là hưá»ng dẫn nhanh cách truy cáºp và xem bóng Äá miá»
n phà trên Xoilac TV:</p>
<ul class="wp-block-list">
<li><strong>Bưá»c 1:</strong> Chuẩn bá» má»t thiết bá» có kết ná»i Internet á»n Äá»nh (máy tÃnh Äá» bà n, laptop, máy tÃnh bảng hoặc Äiá»n thoại smartphone Äá»u ÄÆ°á»£c). Má» trình duyá»t web mà bạn ưa dùng (Google Chrome, Cá»c Cá»c, Firefox, Safari, Opera, v.v.).</li>
</ul>
<ul class="wp-block-list">
<li><strong>Bưá»c 2</strong>: Trên thanh Äá»a chá» hoặc ô tìm kiếm, gõ từ khóa liên quan Äá» tìm trang chá»§ Xoilac TV. Bạn có thá» tìm bằng các cụm từ như âXoilac TVâ, âtrá»±c tiếp bóng Äá Xoilacâ, âxem bóng Äá trá»±c tuyến miá»
n phÃâ,… Kết quả tìm kiếm sẽ hiá»n thá» trang web chÃnh thức cá»§a <strong><a href="/">Xoilac TV</a></strong>. Hãy nhấp và o kết quả dẫn tá»i trang chá»§ Xoilac TV.</li>
</ul>
<ul class="wp-block-list">
<li><strong>Bưá»c 3</strong>: Sau khi truy cáºp trang chá»§ Xoilac TV, bạn sẽ thấy giao diá»n ÄÆ°á»£c thiết kế trá»±c quan và thân thiá»n. Ngay tại trang chá»§ thưá»ng có danh sách các tráºn Äấu Äang và sắp diá»
n ra (và dụ: tráºn âÄang trá»±c tiếpâ, tráºn sẽ diá»
n ra hôm nay, ngà y mai,…).</li>
</ul>
<ul class="wp-block-list">
<li><strong>Bưá»c 4</strong>: Tại trang chá»§, kéo xuá»ng danh sách lá»ch phát sóng hôm nay Äá» tìm tráºn Äấu bạn muá»n xem. Danh sách nà y hiá»n thá» thá»i gian và cặp Äấu cá»§a tất cả các tráºn sẽ diá»
n ra trong ngà y. Khi thấy tráºn mong muá»n, bạn chá» cần click và o nút âXem ngayâ hoặc tên cặp Äấu. Trang web sẽ má» ra trình phát video trá»±c tiếp ngay láºp tức.</li>
</ul>
<ul class="wp-block-list">
<li><strong>Bưá»c 5</strong>: Thưá»ng thức tráºn Äấu! Luá»ng xem trá»±c tiếp trên Xoilac TV sẽ bắt Äầu phát khi tráºn Äấu Äến giá». Nếu tráºn chưa bắt Äầu, bạn có thá» sẽ thấy Äá»ng há» Äếm ngược hoặc thông tin trưá»c tráºn. Khi tráºn diá»
n ra, bạn có thá» tùy chá»nh má»t sá» thiết láºp trên trình phát như: chá»n Äá» phân giải phù hợp (nếu mạng yếu có thá» chá»n mức 720p, 480p Äá» mượt hÆ¡n, còn nếu mạng mạnh hãy chá»n 1080p Äá» có chất lượng tá»t nhất), Äiá»u chá»nh âm lượng, xem toà n mà n hình, v.v.</li>
</ul>
<p>Trong quá trình xem, hãy Äảm bảo ÄÆ°á»ng truyá»n Internet cá»§a bạn á»n Äá»nh (ưu tiên dùng Wi-Fi mạnh hoặc mạng dây, hạn chế dùng 3G/4G cháºp chá»n) Äá» có trải nghiá»m tá»t nhất.</p>
<p>Lưu ý rằng Xoilac TV tương thÃch trên hầu hết các thiết bá» và há» Äiá»u hà nh. Bạn có thá» xem trên Äiá»n thoại di Äá»ng, máy tÃnh bảng bằng cách truy cáºp website Xoilac bằng trình duyá»t di Äá»ng, giao diá»n web sẽ tá»± Äiá»u chá»nh tá»i ưu cho mà n hình nhá». Nhá» váºy, bạn có thá» mang cả thế giá»i bóng Äá bên mình, xem má»i lúc má»i nÆ¡i cá»±c kỳ tiá»n lợi mà không cần cà i Äặt ứng dụng riêng.</p>
<h2 class="wp-block-heading"><span class="ez-toc-section" id="So_sanh_Xoilac_TV_va_cac_nen_tang_truc_tiep_bong_da_khac"></span>So sánh Xoilac TV và các ná»n tảng trá»±c tiếp bóng Äá khác<span class="ez-toc-section-end"></span></h2>
<p>Hiá»n nay có khá nhiá»u website cung cấp dá»ch vụ xem bóng Äá trá»±c tuyến miá»
n phà bên cạnh Xoilac TV, tiêu biá»u có thá» ká» Äến như CakhiaTV, LuongSonTV, GaVangTV, ThapCamTV, RakhoiTV, v.v. Má»i ná»n tảng Äá»u có những ưu Äiá»m riêng, tuy nhiên không phải trang nà o cÅ©ng Äảm bảo ÄÆ°á»£c Äầy Äá»§ các yếu tá» vá» chất lượng và trải nghiá»m ngưá»i dùng như Xoilac. </p>
<p>Dưá»i Äây là bảng so sánh nhanh giữa Xoilac TV và má»t sá» trang xem bóng Äá trá»±c tiếp phá» biến hiá»n nay dá»±a trên các tiêu chà quan trá»ng:</p>
<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>Ná»n tảng</th><th>Chất lượng hình ảnh</th><th>Äá» á»n Äá»nh ÄÆ°á»ng truyá»n</th><th>Chất lượng BLV</th><th>Sá» lượng tráºn Äấu phát sóng má»i ngà y</th></tr></thead><tbody><tr><td><strong>Xoilac TV</strong></td><td>Full HD (há» trợ tá»i 4K), hình ảnh cá»±c kỳ sắc nét</td><td>Rất á»n Äá»nh, hầu như không xảy ra giáºt lag</td><td>BLV chuyên nghiá»p, am hiá»u và hà i hưá»c</td><td>Phát sóng toà n bá» các tráºn Äấu (bao gá»m cả giải lá»n nhá», ~20-30+ tráºn/ngà y khi cao Äiá»m)</td></tr><tr><td><strong>CakhiaTV</strong></td><td>Full HD sắc nét</td><td>á»n Äá»nh, hiếm khi bá» lag</td><td>BLV riêng sôi ná»i (và dụ: Già ng A Phò, Già ng A Lá»)</td><td>Hầu hết các tráºn Äấu quan trá»ng (~15-20 tráºn/ngà y)</td></tr><tr><td><strong>LuongSonTV</strong></td><td>HD Äến Full HD (tương Äá»i rõ nét)</td><td>Khá á»n Äá»nh, Äôi lúc giảm chất lượng nếu quá tải</td><td>BLV nhiá»t tình, giá»ng bình dân</td><td>Nhiá»u tráºn má»i ngà y (chá»§ yếu các giải lá»n, ~10-15 tráºn/ngà y)</td></tr><tr><td><strong>GaVangTV</strong></td><td>HD (chất lượng á»n Äá»nh, Ãt tùy chá»n 1080p)</td><td>Tương Äá»i á»n Äá»nh, có thá» gặp lag nhẹ lúc cao Äiá»m</td><td>Có BLV tiếng Viá»t, chất lượng bình luáºn á» mức cÆ¡ bản</td><td>Sá» tráºn trung bình, táºp trung giải hot (~5-10 tráºn/ngà y)</td></tr><tr><td><strong>ThapCamTV</strong></td><td>HD (hình ảnh á» mức chấp nháºn ÄÆ°á»£c)</td><td>á»n Äá»nh vừa phải, thá»nh thoảng bá» giáºt khi Äông ngưá»i xem</td><td>BLV không chuyên, bình luáºn ÄÆ¡n giản</td><td>Ãt tráºn hÆ¡n, thưá»ng chá» các tráºn Äáng chú ý (~5-10 tráºn/ngà y)</td></tr><tr><td><strong>Socolive</strong></td><td>Full HD (hình ảnh rõ nét)</td><td>á»n Äá»nh, tá»c Äá» tải khá tá»t</td><td>BLV vui vẻ, pha trò tạo không khÃ</td><td>Nhiá»u tráºn má»i ngà y (bao quát các giải lá»n, ~10-20 tráºn/ngà y)</td></tr></tbody></table></figure>
<p>Äánh giá chung: Từ bảng so sánh trên có thá» thấy Xoilac TV ná»i trá»i á» hầu hết các tiêu chÃ. Ná»n tảng nà y cung cấp chất lượng hình ảnh cao nhất (há» trợ Äến 4K), ÄÆ°á»ng truyá»n siêu á»n Äá»nh nhá» há» thá»ng server tá»t, cùng Äá»i ngÅ© bình luáºn viên chuyên nghiá»p mang lại trải nghiá»m sá»ng Äá»ng. Äặc biá»t, Xoilac TV phá»§ sóng gần như toà n bá» các tráºn Äấu diá»
n ra má»i ngà y, bao gá»m cả những giải Äấu nhá» và tráºn Äấu Ãt ÄÆ°á»£c chú ý, Äiá»u mà má»t sá» trang khác chưa chắc Äã Äáp ứng Äầy Äá»§.</p>
<h2 class="wp-block-heading"><span class="ez-toc-section" id="Cau_hoi_thuong_gap_doi_voi_Xoilac_TV"></span>Câu há»i thưá»ng gặp Äá»i vá»i Xoilac TV<span class="ez-toc-section-end"></span></h2>
<p>Dưá»i Äây là má»t sá» thắc mắc phá» biến cá»§a ngưá»i dùng má»i vá» dá»ch vụ Xoilac TV, cùng vá»i lá»i giải Äáp chi tiết giúp bạn hiá»u rõ hÆ¡n trưá»c khi trải nghiá»m:</p>
<h3 class="wp-block-heading"><span class="ez-toc-section" id="Xoilac_TV_co_mien_phi_khong_Co_can_dang_ky_tai_khoan_de_xem_khong"></span>Xoilac TV có miá»
n phà không? Có cần ÄÄng ký tà i khoản Äá» xem không?<span class="ez-toc-section-end"></span></h3>
<p>Hoà n toà n miá»
n phÃ. Xoilac TV là ná»n tảng xem bóng Äá trá»±c tuyến miá»
n phà 100%, bạn sẽ không mất bất kỳ khoản phà nà o Äá» xem các tráºn Äấu tại Äây. Äá»ng thá»i, trang web không yêu cầu ÄÄng ký tà i khoản. Bạn chá» cần truy cáºp và o website Xoilac TV, chá»n tráºn Äấu mình muá»n và bắt Äầu xem ngay láºp tức.</p>
<h3 class="wp-block-heading"><span class="ez-toc-section" id="Xoilac_TV_co_an_toan_khong_Xem_o_day_co_bi_dinh_virus_khong"></span>Xoilac TV có an toà n không? Xem á» Äây có bá» dÃnh virus không?<span class="ez-toc-section-end"></span></h3>
<p>Xoilac TV ÄÆ°á»£c Äánh giá là khá an toà n và uy tÃn trong cá»ng Äá»ng ngưá»i xem bóng Äá. Trang web luôn kiá»m tra và Äảm bảo các ÄÆ°á»ng link phát sóng không chứa mã Äá»c, virus hay phần má»m gián Äiá»p. Ngoà i ra, Xoilac không yêu cầu ngưá»i dùng tải vá» bất cứ plugin hay ứng dụng lạ nà o, bạn chá» cần xem trá»±c tiếp trên trình duyá»t nên nguy cÆ¡ nhiá»
m virus là rất thấp.</p>
<h3 class="wp-block-heading"><span class="ez-toc-section" id="Xoilac_TV_co_xem_duoc_tren_dien_thoai_khong_Ho_tro_nhung_thiet_bi_nao"></span>Xoilac TV có xem ÄÆ°á»£c trên Äiá»n thoại không? Há» trợ những thiết bá» nà o?<span class="ez-toc-section-end"></span></h3>
<p>Có, bạn hoà n toà n có thá» xem Xoilac TV trên Äiá»n thoại di Äá»ng cÅ©ng như nhiá»u thiết bá» khác. Trang web Xoilac TV Äã ÄÆ°á»£c tá»i ưu giao diá»n responsive phù hợp vá»i má»i kÃch thưá»c mà n hình, từ máy tÃnh Äá» bà n, laptop cho Äến máy tÃnh bảng, smartphone và cả smart TV. Chá» cần thiết bá» cá»§a bạn có kết ná»i Internet và cà i má»t trình duyá»t web thông dụng, bạn truy cáºp và o Xoilac TV là có thá» xem ngay mà không cần cà i Äặt thêm ứng dụng.</p>
<h3 class="wp-block-heading"><span class="ez-toc-section" id="Xoilac_TV_co_nhung_giai_dau_nao_Co_chieu_day_du_cac_tran_khong"></span>Xoilac TV có những giải Äấu nà o? Có chiếu Äầy Äá»§ các tráºn không?<span class="ez-toc-section-end"></span></h3>
<p>Xoilac TV phát sóng hầu hết tất cả các giải Äấu bóng Äá lá»n nhá» trên thế giá»i cÅ©ng như trong nưá»c. Từ các giải hà ng Äầu châu Ãu như Ngoại Hạng Anh, Champions League, La Liga, Serie A, Bundesliga, Ligue 1 cho Äến các giải Nam Mỹ (Copa America), châu à (AFC Champions League, Asian Cup) và Äặc biá»t Äầy Äá»§ các tráºn Äấu cá»§a Äá»i tuyá»n Viá»t Nam (AFF Cup, SEA Games, vòng loại World Cupâ¦). Ngoà i ra các giải quá»c ná»i như V-League, Cúp Quá»c Gia Viá»t Nam cÅ©ng ÄÆ°á»£c Xoilac chú trá»ng. Có thá» nói, bất kỳ tráºn Äấu nà o mà bạn muá»n xem thì Xoilac TV gần như Äá»u có. Lá»ch phát sóng trên Xoilac trải dà i cả ngà y từ sá»m tá»i khuya, bao gá»m cả những tráºn Äấu sá»m buá»i chiá»u lẫn các tráºn khuya muá»n.</p>
<h3 class="wp-block-heading"><span class="ez-toc-section" id="Lam_gi_neu_dang_xem_Xoilac_TV_ma_bi_giat_lag_hoac_khong_xem_duoc"></span>Là m gì nếu Äang xem Xoilac TV mà bá» giáºt, lag hoặc không xem ÄÆ°á»£c?<span class="ez-toc-section-end"></span></h3>
<p>Trong Äa sá» trưá»ng hợp, viá»c xem bóng Äá trên Xoilac TV sẽ diá»
n ra mượt mà . Tuy nhiên, nếu bạn gặp tình huá»ng giáºt lag, hãy bình tÄ©nh thá» má»t sá» cách khắc phục sau:</p>
<p>Kiá»m tra kết ná»i Internet cá»§a bạn: Äảm bảo thiết bá» cá»§a bạn Äang có ÄÆ°á»ng truyá»n mạng á»n Äá»nh. Nếu dùng Wi-Fi, hãy xem tÃn hiá»u có mạnh không, hoặc chuyá»n sang mạng dây nếu có thá». Trưá»ng hợp Äang dùng 3G/4G, tÃn hiá»u di Äá»ng yếu có thá» gây lag, bạn nên di chuyá»n Äến khu vá»±c sóng tá»t hÆ¡n.</p>
<p>Giảm chất lượng phát sóng: Xoilac cho phép tùy chá»n Äá» phân giải video. Nếu Äang Äá» Full HD nhưng mạng yếu, bạn có thá» chá»n xuá»ng 720p hoặc 480p Äá» giảm tải và tránh lag.</p>
<p>Tải lại trang hoặc Äá»i link dá»± phòng: Nhấn F5 (refresh) trên máy tÃnh hoặc kéo xuá»ng Äá» là m má»i trang trên di Äá»ng.</p>
<h3 class="wp-block-heading"><span class="ez-toc-section" id="Xoilac_TV_co_binh_luan_tieng_Viet_cho_moi_tran_dau_khong"></span>Xoilac TV có bình luáºn tiếng Viá»t cho má»i tráºn Äấu không?<span class="ez-toc-section-end"></span></h3>
<p>Xoilac TV cá» gắng cung cấp bình luáºn tiếng Viá»t cho Äa sá» các tráºn Äấu, Äặc biá»t là những tráºn thuá»c giải Äấu lá»n hoặc có Äông khán giả. Äá»i ngÅ© BLV cá»§a Xoilac luôn sẵn sà ng tưá»ng thuáºt trá»±c tiếp các tráºn cầu tâm Äiá»m Ngoại Hạng Anh, Cúp C1, Äá»i tuyá»n Viá»t Nam… Tuy nhiên, vá»i má»t sá» tráºn Äấu rất Ãt ngưá»i quan tâm hoặc diá»
n ra trùng giá» quá nhiá»u tráºn, có thá» sẽ chá» có âm thanh bình luáºn gá»c (tiếng Anh hoặc tiếng Äá»a phương) hoặc bình luáºn không chuyên. Dù váºy, những trưá»ng hợp nà y không nhiá»u. Äa phần trải nghiá»m xem trên Xoilac TV Äá»u có bình luáºn tiếng Viá»t sôi ná»i, giúp khán giả theo dõi dá»
dà ng và hà o hứng hơn.</p>
<p>Ngoà i những câu há»i trên, nếu bạn còn bất kỳ thắc mắc nà o khi sá» dụng Xoilac TV, Äừng ngần ngại liên há» qua các kênh há» trợ cá»§a trang. Äá»i ngÅ© chÄm sóc ngưá»i xem cá»§a Xoilac luôn túc trá»±c và sẵn sà ng giải Äáp má»t cách nhanh chóng và táºn tình. Chúc bạn có những giây phút xem bóng Äá tháºt vui vẻ và mãn nhãn cùng Xoilac TV!</p>
<p></p>
</div>
</div>
</div>
</div>
</div>
</section>
</main>
<!-- 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; text-align: center;">
<div style="width: 100%; max-width: 1280px; margin: 0 auto; padding: 20px 30px">
<div class="footer-logo">
<img src="/wp-content/uploads/2025/06/logo-xoilac.png" alt="Xoilac TV" style="vertical-align: middle; height: 40px;">
</div>
<p class="footer-descript">
<a href="/"><strong style="color: #00aaff;">Xoilac</strong></a> TV - Xôi Lạc TV cung cấp link xem bóng Äá trá»±c tuyến Ngoại Hạng Anh, Euro, Bundesliga, VÄQG Tây Ban Nha,... bóng Äá Viá»t Nam. Xem trá»±c tiếp bóng Äá Xôi Lạc TV hôm nay cùng dà n BLV tiếng Viá»t chất lượng.
</p>
<nav style="margin: 20px 0;">
<a href="/about" class="footer-nav-text" style="color: #00aaff; margin: 0 10px; font-weight: bold;">Vá» CHÃNG TÃI</a>
<a href="/privacy-policy"class="footer-nav-text" style="color: #00aaff; margin: 0 10px; font-weight: bold;">CHÃNH SÃCH</a>
<a href="/terms"class="footer-nav-text" style="color: #00aaff; margin: 0 10px; font-weight: bold;">ÄIá»U KHOẢN</a>
<a href="/contact"class="footer-nav-text" style="color: #00aaff; margin: 0 10px; font-weight: bold;">LIÃN Há»</a>
<a href="/ban-quyen"class="footer-nav-text" style="color: #00aaff; margin: 0 10px; font-weight: bold;">BẢN QUYá»N</a>
<a href="/mien-tru-trach-nhiem"class="footer-nav-text" style="color: #00aaff; margin: 0 10px; font-weight: bold;">MIá»N TRỪ TRÃCH NHIá»M</a>
<a href="#"class="footer-nav-text" style="color: #00aaff; margin: 0 10px; font-weight: bold;">TUYá»N DỤNG</a>
<a href="#"class="footer-nav-text" style="color: #00aaff; margin: 0 10px; font-weight: bold;">SITEMAP</a>
</nav>
<p class="footer-text">Doanh nghiá»p: Xoilac TV</p>
<p class="footer-text">Chá»u trách nhiá»m ná»i dung: <a href="/author/vukhactiep"><span style="color: #00aaff;">VÅ© Khắc Tiá»p</span></a></p>
<p class="footer-text">Sá» Äiá»n thoại: 0992575893</p>
<p class="footer-text">Email: [email protected]</p>
<p class="footer-text">Äá»a chá»: <a href="https://maps.app.goo.gl/cQ1ZUi3u8QSr3mkn9" target="_blank" rel="nofollow"><span style="color: #00aaff;">20B P. Quán Sứ, Hà ng Bông, Hoà n Kiếm, Hà Ná»i, Viá»t Nam</span></a></p>
<p class="footer-text">Hoạt Äá»ng: 00:00â23:59 (hằng ngà y)</p>
<p style="margin-top: 15px;">Hashtag: #xoilac #xoilactv #tructiepbongda #xembongdatructiep #xembongdatructuyen</p>
<div style="margin-top: 15px;">
<a href="#"><img src="https://cdn.nexhire.io/wp-content/wp-content/uploads/2025/06/icon-facebook.webp" alt="Facebook" style="width: 24px; margin: 0 5px;"></a>
<a href="#" rel="nofollow" target="_blank"><img src="https://cdn.nexhire.io/wp-content/wp-content/uploads/2025/06/4.png" alt="Twitter" style="width: 24px; margin: 0 5px;"></a>
<a href="#" rel="nofollow" target="_blank"><img src="https://cdn.nexhire.io/wp-content/wp-content/uploads/2025/06/pngimg.com-twitch_PNG28.png" alt="Twitch" style="width: 24px; margin: 0 5px;"></a>
<a href="#" rel="nofollow" target="_blank"><img src="https://cdn.nexhire.io/wp-content/wp-content/uploads/2025/06/Youtube_logo.png" alt="Youtube" style="width: 24px; margin: 0 5px;"></a>
<a href="#" rel="nofollow" target="_blank"><img src="https://cdn.nexhire.io/wp-content/wp-content/uploads/2025/06/reddit-logo-1.png" alt="Reddit" style="width: 24px; margin: 0 5px;"></a>
<a href="#" rel="nofollow" target="_blank"><img src="https://cdn.nexhire.io/wp-content/wp-content/uploads/2025/06/pngimg.com-pinterest_PNG63.png" alt="Pinterest" style="width: 24px; margin: 0 5px;"></a>
<a href="#" rel="nofollow" target="_blank"><img src="https://cdn.nexhire.io/wp-content/wp-content/uploads/2025/06/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.nexhire.io/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://nexhire.io/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://nexhire.io/truc-tiep/${baseSlug}${separator}houseId=${itemHouseId}" rel="nofollow">${item.nickName}</a>`;
} else {
return `<a href="https://nexhire.io/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://nexhire.io/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://nexhire.io/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 type="text/javascript" id="ez-toc-scroll-scriptjs-js-extra">
/* <![CDATA[ */
var eztoc_smooth_local = {"scroll_offset":"30","add_request_uri":"","add_self_reference_link":""};
/* ]]> */
</script>
<script type="text/javascript" src="https://cdn.nexhire.io/wp-content/plugins/easy-table-of-contents/assets/js/smooth_scroll.min.js?ver=2.0.74" id="ez-toc-scroll-scriptjs-js"></script>
<script type="text/javascript" src="https://cdn.nexhire.io/wp-content/plugins/easy-table-of-contents/vendor/js-cookie/js.cookie.min.js?ver=2.2.1" id="ez-toc-js-cookie-js"></script>
<script type="text/javascript" src="https://cdn.nexhire.io/wp-content/plugins/easy-table-of-contents/vendor/sticky-kit/jquery.sticky-kit.min.js?ver=1.9.2" id="ez-toc-jquery-sticky-kit-js"></script>
<script type="text/javascript" id="ez-toc-js-js-extra">
/* <![CDATA[ */
var ezTOC = {"smooth_scroll":"1","visibility_hide_by_default":"","scroll_offset":"30","fallbackIcon":"<span class=\"\"><span class=\"eztoc-hide\" style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #999;color:#999\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #999;color:#999\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span>","chamomile_theme_is_on":""};
/* ]]> */
</script>
<script type="text/javascript" src="https://cdn.nexhire.io/wp-content/plugins/easy-table-of-contents/assets/js/front.min.js?ver=2.0.74-1746443216" id="ez-toc-js-js"></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>
<!-- | nexhire.io | 2026-10-16 15:09:38 -->
| # |
Url |
Url |
Source |
Date |
| 1 |
https://nexhire.io/ |
|
2026-10-16 15:59:34 |
| 2 |
https://play.google.com/store/games |
|
2026-10-16 15:59:33 |
| 3 |
https://www.thebolditalic.com/?gi=… |
|
2026-10-16 15:59:33 |
| 4 |
https://www.thebolditalic.com/?gi=… |
|
2026-10-16 15:59:32 |
| 5 |
https://www.texarkanatwins.com/%25… |
|
2026-10-16 15:59:31 |
| 6 |
https://getyourloverbackforever.bl… |
|
2026-10-16 15:59:30 |
| 7 |
https://kinkyliterature.com/ |
|
2026-10-16 15:59:30 |
| 8 |
https://www.thebolditalic.com/?gi=… |
|
2026-10-16 15:59:30 |
| 9 |
https://www.thebolditalic.com/?gi=… |
|
2026-10-16 15:59:29 |
| 10 |
https://auth.mediacorp.sg/u/login?… |
|
2026-10-16 15:59:29 |
| 11 |
https://www.thebolditalic.com/?gi=… |
|
2026-10-16 15:59:28 |
| 12 |
https://www.texarkanatwins.com/%25… |
|
2026-10-16 15:59:27 |
| 13 |
https://www.thebolditalic.com/?gi=… |
|
2026-10-16 15:59:27 |
| 14 |
https://www.texarkanatwins.com/%25… |
|
2026-10-16 15:59:27 |
| 15 |
https://www.thebolditalic.com/?gi=… |
|
2026-10-16 15:59:26 |
| 16 |
https://www.thebolditalic.com/?gi=… |
|
2026-10-16 15:59:26 |
| 17 |
https://www.thebolditalic.com/?gi=… |
|
2026-10-16 15:59:25 |
| 18 |
https://www.texarkanatwins.com/%25… |
|
2026-10-16 15:59:24 |
| 19 |
https://www.thebolditalic.com/?gi=… |
|
2026-10-16 15:59:24 |
| 20 |
https://www.texarkanatwins.com/%25… |
|
2026-10-16 15:59:24 |