Showing source for: https://www.kreva.biz/
Duration: 0.0536s
Server: TencentEdgeOne
<!DOCTYPE html>
<html lang="vi">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<link rel="preconnect" href="https://fonts.googleapis.com" />
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;700&display=swap" rel="stylesheet" />
<link rel="stylesheet" href="/wp-content/themes/cakhiatv/style.css" />
<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>Xoilac TV - Trá»±c Tiếp Bóng Äá Miá»
n Phà - Link Xôi Lạc TTBD</title>
<meta name="description" content="Xoilac TV - trang web phát sóng bóng Äá trá»±c tiếp không thu phà cá»§a ngưá»i dùng hot nhất nÄm 2025. Äây cÅ©ng là má»t trong những kênh ÄÆ°á»£c yêu thÃch và có sá»"/>
<meta name="robots" content="follow, index, max-snippet:-1, max-video-preview:-1, max-image-preview:large"/>
<link rel="canonical" href="https://www.kreva.biz" />
<meta property="og:locale" content="vi_VN" />
<meta property="og:type" content="website" />
<meta property="og:title" content="Xoilac TV - Trá»±c Tiếp Bóng Äá Miá»
n Phà - Link Xôi Lạc TTBD" />
<meta property="og:description" content="Xoilac TV - trang web phát sóng bóng Äá trá»±c tiếp không thu phà cá»§a ngưá»i dùng hot nhất nÄm 2025. Äây cÅ©ng là má»t trong những kênh ÄÆ°á»£c yêu thÃch và có sá»" />
<meta property="og:url" content="https://www.kreva.biz" />
<meta property="og:site_name" content="Xoilac TV - Trá»±c tiếp bóng Äá miá»
n phà - Link Xôi Lạc TTBD" />
<meta property="og:updated_time" content="2025-05-27T14:43:21+07:00" />
<meta property="article:published_time" content="2025-05-05T18:00:30+07:00" />
<meta property="article:modified_time" content="2025-05-27T14:43:21+07:00" />
<meta name="twitter:card" content="summary_large_image" />
<meta name="twitter:title" content="Xoilac TV - Trá»±c Tiếp Bóng Äá Miá»
n Phà - Link Xôi Lạc TTBD" />
<meta name="twitter:description" content="Xoilac TV - trang web phát sóng bóng Äá trá»±c tiếp không thu phà cá»§a ngưá»i dùng hot nhất nÄm 2025. Äây cÅ©ng là má»t trong những kênh ÄÆ°á»£c yêu thÃch và có sá»" />
<meta name="twitter:site" content="@myphamtocso1com" />
<meta name="twitter:creator" content="@myphamtocso1com" />
<meta name="twitter:label1" content="ÄÆ°á»£c viết bá»i" />
<meta name="twitter:data1" content="buitrungthanh" />
<meta name="twitter:label2" content="Thá»i gian Äá» Äá»c" />
<meta name="twitter:data2" content="10 phút" />
<script type="application/ld+json" class="rank-math-schema-pro">{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://www.kreva.biz/#organization","name":"Xoilac TV","sameAs":["https://twitter.com/myphamtocso1com","https://www.youtube.com/@xoilacmyphamtocso1","https://about.me/xoilacmyphamtocso1","https://www.reddit.com/user/xoilacmyphamtocso1/","https://www.facebook.com/xoilacmyphamtocso1","https://www.instagram.com/xoilacmyphamtocso1/","https://www.tumblr.com/xoilacmyphamtocso1","https://www.goodreads.com/user/show/189884511-xoilac","https://telegra.ph/Xoilac-TV-04-27-5","https://www.instapaper.com/p/myphamtocso1com","https://www.quora.com/profile/Xoilac-Myphamtocso1/Xoilac-https-myphamtocso1-com-tv-la-trang-xem-bong-da-truc-tuyen-toc-do-cao-Xoi-Lac-TV-cung-cap-link-xem-truc-ti","https://xoilacmyphamtocso1.webflow.io/","https://vimeo.com/xoilacmyphamtocso1","https://www.deviantart.com/xoilacmyphamtocso1","https://500px.com/p/xoilacmyphamtocso1","https://www.pinterest.com/xoilacmyphamtocso1","https://profile.hatena.ne.jp/xoilacmyphamtocso1/","https://issuu.com/xoilacmyphamtocso1","https://gravatar.com/xoilacmyphamtocso1","https://pixabay.com/users/49959596/","https://gitlab.com/xoilacmyphamtocso1","https://disqus.com/by/xoilacmyphamtocso1/about/","https://heylink.me/xoilacmyphamtocso1","https://imgur.com/user/xoilacmyphamtocso1/about","https://fliphtml5.com/homepage/gtyoo/","https://gta5-mods.com/users/xoilacmyphamtocso1","https://wakelet.com/@xoilacmyphamtocso1","https://soctrip.com/post/7341faa0-2313-11f0-b7bc-6bd00f67ab03","https://www.metooo.it/e/xoilac-tv-truc-tiep-bong-da-hd-hom-nay-link-ttbd-mien-phi","https://www.notebook.ai/users/1054407","https://www.producthunt.com/@xoilacmyphamtocso1","https://www.walkscore.com/people/315569342695/xoilac","https://www.iconfinder.com/user/xoilacmyphamtocso1","https://www.magcloud.com/user/xoilacmyphamtocso1","https://pubhtml5.com/homepage/oferb/","https://myanimelist.net/profile/myphamtocso1com"],"logo":{"@type":"ImageObject","@id":"https://www.kreva.biz/#logo","url":"https://cdn.adminmypham.site/wp-content/uploads/2025/07/logo-squared.jpg","contentUrl":"https://cdn.adminmypham.site/wp-content/uploads/2025/07/logo-squared.jpg","caption":"Xoilac TV - Tr\u1ef1c ti\u1ebfp b\u00f3ng \u0111\u00e1 mi\u1ec5n ph\u00ed - Link X\u00f4i L\u1ea1c TTBD","inLanguage":"vi","width":"1080","height":"1080"}},{"@type":"WebSite","@id":"https://www.kreva.biz/#website","url":"https://www.kreva.biz","name":"Xoilac TV - Tr\u1ef1c ti\u1ebfp b\u00f3ng \u0111\u00e1 mi\u1ec5n ph\u00ed - Link X\u00f4i L\u1ea1c TTBD","alternateName":"Xoilac TV - Tr\u1ef1c ti\u1ebfp b\u00f3ng \u0111\u00e1 t\u1ed1c \u0111\u1ed9 cao","publisher":{"@id":"https://www.kreva.biz/#organization"},"inLanguage":"vi","potentialAction":{"@type":"SearchAction","target":"https://www.kreva.biz/?s={search_term_string}","query-input":"required name=search_term_string"}},{"@type":"ImageObject","@id":"https://panel.villawh.com/villawh_com_wp-content/uploads/2025/05/AD_4nXfgqnfPLZ_Kue878tJEqlanLM5sqTh2tSfzrmfQ1HJgW1t8A_W1fGKG5ewpdXHglGgSKUCjubR6t0PggczWOWQ9yGSbXDCWnEAhbaG_Fu5kSeQIQYOR-0roMfYX_Wz8ouQRQVli0AkeyM70_UC5QgpV6a21j6Odi1gAw.jpg","url":"https://panel.villawh.com/villawh_com_wp-content/uploads/2025/05/AD_4nXfgqnfPLZ_Kue878tJEqlanLM5sqTh2tSfzrmfQ1HJgW1t8A_W1fGKG5ewpdXHglGgSKUCjubR6t0PggczWOWQ9yGSbXDCWnEAhbaG_Fu5kSeQIQYOR-0roMfYX_Wz8ouQRQVli0AkeyM70_UC5QgpV6a21j6Odi1gAw.jpg","width":"200","height":"200","inLanguage":"vi"},{"@type":"WebPage","@id":"https://www.kreva.biz#webpage","url":"https://www.kreva.biz","name":"Xoilac TV - Tr\u1ef1c Ti\u1ebfp B\u00f3ng \u0110\u00e1 Mi\u1ec5n Ph\u00ed - Link X\u00f4i L\u1ea1c TTBD","datePublished":"2025-05-05T18:00:30+07:00","dateModified":"2025-05-27T14:43:21+07:00","about":{"@id":"https://www.kreva.biz/#organization"},"isPartOf":{"@id":"https://www.kreva.biz/#website"},"primaryImageOfPage":{"@id":"https://panel.villawh.com/villawh_com_wp-content/uploads/2025/05/AD_4nXfgqnfPLZ_Kue878tJEqlanLM5sqTh2tSfzrmfQ1HJgW1t8A_W1fGKG5ewpdXHglGgSKUCjubR6t0PggczWOWQ9yGSbXDCWnEAhbaG_Fu5kSeQIQYOR-0roMfYX_Wz8ouQRQVli0AkeyM70_UC5QgpV6a21j6Odi1gAw.jpg"},"inLanguage":"vi"},{"@type":"Person","@id":"https://www.kreva.biz/author/buitrungthanh","name":"buitrungthanh","url":"https://www.kreva.biz/author/buitrungthanh","image":{"@type":"ImageObject","@id":"https://secure.gravatar.com/avatar/a9475f752f4bc231b068b2c9336129c34468a18540e9b4d4d6f1562cbec918c2?s=96&d=mm&r=g","url":"https://secure.gravatar.com/avatar/a9475f752f4bc231b068b2c9336129c34468a18540e9b4d4d6f1562cbec918c2?s=96&d=mm&r=g","caption":"buitrungthanh","inLanguage":"vi"},"worksFor":{"@id":"https://www.kreva.biz/#organization"}},{"@type":"Article","headline":"Xoilac TV - Tr\u1ef1c Ti\u1ebfp B\u00f3ng \u0110\u00e1 Mi\u1ec5n Ph\u00ed - Link X\u00f4i L\u1ea1c TTBD","datePublished":"2025-05-05T18:00:30+07:00","dateModified":"2025-05-27T14:43:21+07:00","author":{"@id":"https://www.kreva.biz/author/buitrungthanh","name":"buitrungthanh"},"publisher":{"@id":"https://www.kreva.biz/#organization"},"description":"Xoilac TV - trang web ph\u00e1t s\u00f3ng b\u00f3ng \u0111\u00e1 tr\u1ef1c ti\u1ebfp kh\u00f4ng thu ph\u00ed c\u1ee7a ng\u01b0\u1eddi d\u00f9ng hot nh\u1ea5t n\u0103m 2025. \u0110\u00e2y c\u0169ng l\u00e0 m\u1ed9t trong nh\u1eefng k\u00eanh \u0111\u01b0\u1ee3c y\u00eau th\u00edch v\u00e0 c\u00f3 s\u1ed1","name":"Xoilac TV - Tr\u1ef1c Ti\u1ebfp B\u00f3ng \u0110\u00e1 Mi\u1ec5n Ph\u00ed - Link X\u00f4i L\u1ea1c TTBD","@id":"https://www.kreva.biz#richSnippet","isPartOf":{"@id":"https://www.kreva.biz#webpage"},"image":{"@id":"https://panel.villawh.com/villawh_com_wp-content/uploads/2025/05/AD_4nXfgqnfPLZ_Kue878tJEqlanLM5sqTh2tSfzrmfQ1HJgW1t8A_W1fGKG5ewpdXHglGgSKUCjubR6t0PggczWOWQ9yGSbXDCWnEAhbaG_Fu5kSeQIQYOR-0roMfYX_Wz8ouQRQVli0AkeyM70_UC5QgpV6a21j6Odi1gAw.jpg"},"inLanguage":"vi","mainEntityOfPage":{"@id":"https://www.kreva.biz#webpage"}}]}</script>
<!-- /Plugin SEO WordPress Rank Math -->
<link rel='dns-prefetch' href='//cdn.kreva.biz' />
<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.kreva.biz\/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.kreva.biz/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.kreva.biz/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.kreva.biz/wp-content/themes/cakhiatv/style.css?ver=6.8.1' type='text/css' media='all' />
<script type="text/javascript" src="https://cdn.kreva.biz/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.kreva.biz/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://www.kreva.biz/wp-json/" /><link rel="alternate" title="JSON" type="application/json" href="https://www.kreva.biz/wp-json/wp/v2/pages/1060" /><link rel="EditURI" type="application/rsd+xml" title="RSD" href="https://www.kreva.biz/xmlrpc.php?rsd" />
<meta name="generator" content="WordPress 6.8.1" />
<link rel='shortlink' href='https://www.kreva.biz/' />
<link rel="alternate" title="oNhúng (JSON)" type="application/json+oembed" href="https://www.kreva.biz/wp-json/oembed/1.0/embed?url=https%3A%2F%2Fwww.kreva.biz%2F" />
<link rel="alternate" title="oNhúng (XML)" type="text/xml+oembed" href="https://www.kreva.biz/wp-json/oembed/1.0/embed?url=https%3A%2F%2Fwww.kreva.biz%2F&format=xml" />
<style>
@media (min-width: 1024px) {
h1 {
font-size: 1.5em !important;
}
}
.match-teams-score {
display: flex !important;
}
@media (max-width: 767px) {
.xgplayer .xg-inner-controls {
height: 60px !important;
}
.header .logo img{
height: 35px;
}
}
@media (min-width: 481px) and (max-width: 767px) {
div#chat_messages {
max-height: 60vh !important;
}
}
</style>
<style>
.match-section {
min-height: 4800px;
}
.match-card__status {
position: absolute;
top: 13%;
left: 50%;
transform: translate(-50%, -50%);
}
.match-card__stats-content {
background: none !important;
box-shadow: none !important
}
@media (max-width: 480px) {
.team__logo {
width: 40px !important;
height: 40px !important;
}
.match-card__league {
max-width: 100px;
}
.match-card__time {
max-width: 100px;
}
.match-card__status {
max-width: 120px;
order: 1 !important;
font-size: 12px
}
.streaming {
padding: 4px;
}
.btn-view-truc-tiep {
padding: 8px 4px !important;
font-size: 12px;
}
.match-card__stats-content {
display: block !important;
}
.match-card__stats {
display: block !important
}
}
@media (min-width: 768px) and (max-width: 1024px) {
.match-card__status {
position: absolute;
top: 13%;
left: 50%;
transform: translate(-50%, -50%);
}
.match-card__league {
max-width: 110px;
}
}
</style><link rel="icon" href="https://cdn.kreva.biz/wp-content/uploads/2025/05/cropped-xoilac_mypham_logo_header-32x32.png" sizes="32x32" />
<link rel="icon" href="https://cdn.kreva.biz/wp-content/uploads/2025/05/cropped-xoilac_mypham_logo_header-192x192.png" sizes="192x192" />
<link rel="apple-touch-icon" href="https://cdn.kreva.biz/wp-content/uploads/2025/05/cropped-xoilac_mypham_logo_header-180x180.png" />
<meta name="msapplication-TileImage" content="https://cdn.kreva.biz/wp-content/uploads/2025/05/cropped-xoilac_mypham_logo_header-270x270.png" />
<!-- Google tag (tá»ng) -->
<script async src="https://www.googletagmanager.com/gtag/js?id=G-V8GXMSME5N"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'G-V8GXMSME5N');
</script>
<!-- Google tag (myphamtoc) -->
<script async src="https://www.googletagmanager.com/gtag/js?id=G-BWBRLCK901"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag(){dataLayer.push(arguments);}
gtag('js', new Date());
gtag('config', 'G-BWBRLCK901');
</script>
<script src="//s1.what-on.com/widget/service-v2.js?key=3Tooo" async="async"></script>
</head>
<body>
<!-- Header -->
<header class="header">
<div class="container">
<div class="header__inner">
<a href="/" class="logo">
<img src="/wp-content/uploads/2025/05/xoilac_mypham_logo_cut.png" alt="XOILAC TV" />
</a>
<div style="display: flex; align-items: center">
<nav class="nav">
<button class="nav__toggle">
<img src="https://cdn.kreva.biz/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://www.kreva.biz/lich-thi-dau" class="">Lá»CH THI ÄẤU</a></li><li class="nav__item"><a href="https://www.kreva.biz/bang-xep-hang" class="">BẢNG XẾP HẠNG</a></li><li class="nav__item"><a href="https://www.kreva.biz/ket-qua-bong-da" class="">KẾT QUẢ BÃNG ÄÃ</a></li><li class="nav__item"><a href="https://www.kreva.biz/nhan-dinh" class="">NHẬN Äá»NH</a></li><li class="nav__item"><a href="https://www.kreva.biz/tin-bong-da" class="">TIN TỨC</a></li> </ul>
</nav>
<div class="header__buttons">
<a href="https://refvsbf.com/" target="_blank" class="btn btn--secondary header-button" rel="nofollow">
<span class="header-text">CƯỢC VSBET</span>
</a>
<a href="https://t.me/vsbet88888888888888888" rel="nofollow" target="_blank" class="btn btn--default header-button">
<span class="header-text">LIÃN Há» KM</span>
</a>
</div>
</div>
</div>
</div>
</header>
<!-- Main Content -->
<!-- Main Content -->
<main>
<!-- Hero Section -->
<section class="hero">
<div class="container">
<div class="hero__content">
<h1 class="text-uppercase">
Xoilac TV - Trá»±c tiếp bóng Äá miá»
n phà - Link Xôi Lạc TTBD
</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.kreva.biz/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.kreva.biz/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.kreva.biz/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.kreva.biz/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.kreva.biz/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>
<div id="noblv-live" style="display: none;"></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.kreva.biz/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.kreva.biz/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" style="display: none;">
<div class="sports-filter__button-icon">
<img src="https://cdn.kreva.biz/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="" style="display: none;">
<div class="sports-filter__button-icon">
<img src="https://cdn.kreva.biz/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="" style="display: none;">
<div class="sports-filter__button-icon">
<img
src="https://cdn.kreva.biz/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" style="display: none;">
<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="#Tong_quan_thong_tin_ve_nen_tang_Xoilac_TV_2025" >Tá»ng quan thông tin vá» ná»n tảng Xoilac TV 2025</a></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-2" href="#Danh_gia_chat_luong_phat_song_cua_Xoilac_moi_nhat" >Äánh giá chất lượng phát sóng cá»§a Xoilac má»i nhất</a><ul class='ez-toc-list-level-3' ><li class='ez-toc-heading-level-3'><a class="ez-toc-link ez-toc-heading-3" href="#Xem_bong_da_mien_phi" >Xem bóng Äá miá»
n phÃ</a></li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class="ez-toc-link ez-toc-heading-4" href="#Hinh_anh_phat_song_tai_Xoilac_TV_sac_net" >Hình ảnh phát sóng tại Xoilac TV sắc nét</a></li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class="ez-toc-link ez-toc-heading-5" href="#Am_thanh_song_dong" >Ã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-6" href="#Noi_khong_voi_quang_cao_chen_ngang_tran" >Nói không vá»i quảng cáo chen ngang tráºn</a></li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class="ez-toc-link ez-toc-heading-7" href="#Khong_xay_ra_giat_lag_tai_Xoilac_TV" >Không xảy ra giáºt lag tại Xoilac TV</a></li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class="ez-toc-link ez-toc-heading-8" href="#Da_dang_link_du_phong" >Äa dạng link dá»± phòng</a></li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class="ez-toc-link ez-toc-heading-9" href="#Binh_luan_vien_chuyen_nghiep" >Bình luáºn viên chuyên nghiá»p</a></li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class="ez-toc-link ez-toc-heading-10" href="#Theo_doi_bong_da_da_thiet_bi" >Theo dõi bóng Äá Äa thiết bá»</a></li></ul></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-11" href="#Mot_vai_chuyen_muc_hap_dan_khac_hien_co_tai_Xoilac_TV" >Má»t và i chuyên mục hấp dẫn khác hiá»n 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-12" href="#Lich_thi_dau" >Lá»ch thi Äấu</a></li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class="ez-toc-link ez-toc-heading-13" href="#Bang_xep_hang" >Bảng xếp hạng</a></li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class="ez-toc-link ez-toc-heading-14" href="#Ket_qua_bong_da_tai_Xoilac_TV" >Kết quả bóng Äá tại Xoilac TV</a></li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class="ez-toc-link ez-toc-heading-15" href="#Tin_tuc_the_thao" >Tin tức thá» thao</a></li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class="ez-toc-link ez-toc-heading-16" href="#Nhan_dinh_bong_da" >Nháºn Äá»nh bóng Äá</a></li></ul></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-17" href="#So_sanh_Xoilac_TV_voi_nhung_trang_truc_tiep_bong_da_2025_khac" >So sánh Xoilac TV vá»i những trang trá»±c tiếp bóng Äá 2025 khác</a></li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class="ez-toc-link ez-toc-heading-18" href="#FAQs_%E2%80%93_Giai_dap_thac_mac_cua_nguoi_xem_tai_Xoilac_hien_nay" >FAQs – Giải Äáp thắc mắc cá»§a ngưá»i xem tại Xoilac 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-19" href="#Theo_doi_bong_da_tai_day_co_mat_phi_gi_khong" >Theo dõi bóng Äá tại Äây có mất phà gì không?</a></li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class="ez-toc-link ez-toc-heading-20" href="#Xoilac_TV_co_gioi_han_IP_khi_xem_bong_da_khong" >Xoilac TV có giá»i hạn IP khi xem bóng Äá không?</a></li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class="ez-toc-link ez-toc-heading-21" href="#Xoilac_co_tinh_nang_gi_dac_biet_khac" >Xoilac có tÃnh nÄng gì Äặc biá»t khác?</a></li></ul></li></ul></nav></div>
<p><strong><a href="/">Xoilac</a> TV</strong> – trang web phát sóng bóng Äá trá»±c tiếp không thu phà cá»§a ngưá»i dùng hot nhất nÄm 2025. Äây cÅ©ng là má»t trong những kênh ÄÆ°á»£c yêu thÃch và có sá» lượng khách hà ng truy cáºp Äông Äảo. Nếu muá»n trải nghiá»m ná»n tảng, má»i bạn Äá»c hãy cùng chúng tôi khám phá ngay bà i viết bên dưá»i!</p>
<h2 class="wp-block-heading"><span class="ez-toc-section" id="Tong_quan_thong_tin_ve_nen_tang_Xoilac_TV_2025"></span><strong>Tá»ng quan thông tin vá» ná»n tảng Xoilac TV 2025</strong><span class="ez-toc-section-end"></span></h2>
<p>Xôi Lạc TV là trang web chuyên phát sóng trá»±c tiếp các tráºn Äá bóng Äá»nh cao trên toà n thế giá»i. Äặc biá»t trong thá»i Äại công nghá» sá» Äang phát triá»n như hiá»n nay, Äa sá» ngưá»i dùng Äá»u lá»±a chá»n theo dõi thá» thao thông qua Äiá»n thoại, máy tÃnh,… thay vì cách xem truyá»n thá»ng trên TV như trưá»c. Không chá» váºy, Äá» theo dõi tráºn Äấu thì bạn cần truy cáºp và o <strong><a href="/">Xoilac TV</a></strong> uy tÃn chất lượng cao.</p>
<p>Äó cÅ©ng chÃnh là lý do ná»n tảng Xoi Lac ÄÆ°á»£c ra Äá»i và phục vụ hà ng triá»u cá» Äá»ng viên tại Viá»t Nam. Äứng sau há» thá»ng nà y Äá»u là các chuyên gia bóng Äá hà ng Äầu cùng nhiá»u kỹ thuáºt viên IT chuyên nghiá»p. Vì váºy, website Äã phát triá»n cá»±c nhanh và áp dụng công nghá» phát sóng má»i nhất. Äảm bảo khi truy cáºp và o Äây, bạn sẽ tìm ÄÆ°á»£c ÄÆ°á»ng link tráºn Äấu mình yêu thÃch cá»±c dá»
dà ng.</p>
<figure class="wp-block-image"><img decoding="async" src="https://panel.villawh.com/villawh_com_wp-content/uploads/2025/05/AD_4nXfgqnfPLZ_Kue878tJEqlanLM5sqTh2tSfzrmfQ1HJgW1t8A_W1fGKG5ewpdXHglGgSKUCjubR6t0PggczWOWQ9yGSbXDCWnEAhbaG_Fu5kSeQIQYOR-0roMfYX_Wz8ouQRQVli0AkeyM70_UC5QgpV6a21j6Odi1gAw.jpg" alt=""/></figure>
<p><em>Sơ lược thông tin chung vỠtrang Xoilac TV 2025</em></p>
<h2 class="wp-block-heading"><span class="ez-toc-section" id="Danh_gia_chat_luong_phat_song_cua_Xoilac_moi_nhat"></span><strong>Äánh giá chất lượng phát sóng cá»§a Xoilac má»i nhất</strong><span class="ez-toc-section-end"></span></h2>
<p>Khi ngưá»i dùng truy cáºp và o trang web <strong><a href="/">Xôi Lạc TV</a></strong> Äảm bảo sẽ phải bất ngá» ngay từ lần Äầu. Bá»i hiá»n nay, thương hiá»u Äang không ngừng cải tiến và cung cấp nhiá»u ưu Äiá»m Äặc sắc nhất phục vụ cho những khách hà ng Äam mê thá» thao. Bao gá»m:</p>
<h3 class="wp-block-heading"><span class="ez-toc-section" id="Xem_bong_da_mien_phi"></span><strong>Xem bóng Äá miá»
n phÃ</strong><span class="ez-toc-section-end"></span></h3>
<p>Ưu Äiá»m Äầu tiên mà chúng ta không thá» bá» qua má»i khi nhắc Äến ná»n tảng <strong>Xoi Lac TV </strong>Äó chÃnh là tÃnh nÄng phát sóng tráºn Äấu miá»
n phÃ. Vá»i mục tiêu xây dá»±ng sân chÆ¡i ÄÆ°a ngưá»i dùng Viá»t Äến gần hÆ¡n vá»i Äam mê, há» thá»ng hiá»n tại không thu bất kỳ khoản phà nà o dà nh cho bạn. Do váºy, chúng ta có thá» thá»a sức truy cáºp khám phá tráºn Äấu má»t cách trá»n vẹn mà không cần lo lắng vá» tà i chÃnh.</p>
<h3 class="wp-block-heading"><span class="ez-toc-section" id="Hinh_anh_phat_song_tai_Xoilac_TV_sac_net"></span><strong>Hình ảnh phát sóng tại Xoilac TV sắc nét</strong><span class="ez-toc-section-end"></span></h3>
<p>Nhá» sá»± Äầu tư chá»n chu vá» công nghá» phát sóng cùng há» thá»ng server hiá»n Äại nên ná»n tảng cam kết mang Äến kho hình ảnh chất lượng cao cá»±c kỳ sắc nét. Äiá»u nà y giúp má»i khán giả truy cáºp Äá»u có cảm nháºn chân thá»±c trưá»c những mà n giao chiến Äầy ká»ch tÃnh và pha bóng Äặc sắc nhất.</p>
<h3 class="wp-block-heading"><span class="ez-toc-section" id="Am_thanh_song_dong"></span><strong>Ãm thanh sá»ng Äá»ng</strong><span class="ez-toc-section-end"></span></h3>
<p>Chưa hết, <strong>XoilacTV </strong>cÅ©ng xây dá»±ng há» thá»ng âm thanh sá»ng Äá»ng và rõ rà ng. Äảm bảo tái hiá»n Äầy Äá»§ từng tiếng hò reo, cá» Äá»ng, tiếng trá»ng nhiá»t tình trên sân cá». Äiá»u nà y hứa hẹn mang Äến trải nghiá»m chân thá»±c và rõ rà ng cho má»i khán giả. Nhá» Äó, chúng ta sẽ có cảm giác như Äang góp mặt trá»±c tiếp á» sân váºn Äá»ng Äá» cá» vÅ© cho Äá»i tuyá»n mình yêu thÃch.</p>
<figure class="wp-block-image"><img decoding="async" src="https://panel.villawh.com/villawh_com_wp-content/uploads/2025/05/AD_4nXcxE0kJ9pSm-AkWliPY3t-4ggN995UWrqhkND0DN10O2PDBSqp9syZawQ1ll0NweDEKk2bROEHRJwrTSBAXS4oWoUug6BKyKKJ2fuUmmoDbddE6Mthmgi77lkrYcTnqekZrtmyL5AkeyM70_UC5QgpV6a21j6Odi1gAw.jpg" alt=""/></figure>
<p><em>Äánh giá há» thá»ng âm thanh phát sóng tại Xoilac</em></p>
<h3 class="wp-block-heading"><span class="ez-toc-section" id="Noi_khong_voi_quang_cao_chen_ngang_tran"></span><strong>Nói không vá»i quảng cáo chen ngang tráºn</strong><span class="ez-toc-section-end"></span></h3>
<p>TÃnh nÄng Äặc biá»t tiếp theo mà chúng tôi muá»n Äá» cáºp Äến trong bà i viết nà y Äó chÃnh là không có quảng cáo chen ngang. Thấu hiá»u ÄÆ°á»£c nhu cầu giải trÃ, theo dõi bóng Äá cá»§a ngưá»i dùng cÅ©ng như sá»± phiá»n toái khi các video xuất hiá»n giữa chừng tráºn là m gián Äoạn nên ná»n tảng Äã khắc phục hoà n toà n Äiá»u nà y.</p>
<p>Nhá» váºy, Äảm bảo ngưá»i dùng có thá» theo dõi má»t cách mượt mà các tráºn bóng Äá mình yêu thÃch. Äá»ng thá»i trong những khoảnh khắc cÄng thẳng, <strong>Xoilac TV</strong> cam kết không xuất hiá»n quảng cáo chen ngang gây gián Äoạn và khó chá»u cho cá» Äá»ng viên.</p>
<h3 class="wp-block-heading"><span class="ez-toc-section" id="Khong_xay_ra_giat_lag_tai_Xoilac_TV"></span><strong>Không xảy ra giáºt lag tại Xoilac TV</strong><span class="ez-toc-section-end"></span></h3>
<p>Tuy Äây là má»t trong những ná»n tảng cho phép ngưá»i dùng theo dõi bóng Äá miá»
n phà nhưng chất lượng mà website cung cấp lại vô cùng vượt trá»i. Theo Äó, khi theo dõi bạn sẽ tuyá»t Äá»i không bắt gặp tình trạng giáºt lag xảy ra á» các giải Äấu lá»n nhiá»u ngưá»i quan tâm. Ngay cả khi lượng truy cáºp máy chá»§ cá»±c Äông thì há» thá»ng vẫn có thá» phát sóng má»t cách mượt mà nhất.</p>
<h3 class="wp-block-heading"><span class="ez-toc-section" id="Da_dang_link_du_phong"></span><strong>Äa dạng link dá»± phòng</strong><span class="ez-toc-section-end"></span></h3>
<p>Ná»n tảng phát sóng<a href="/"> <strong>trá»±c tiếp bóng Äá</strong></a><strong> </strong>Äảm bảo cung cấp Äầy Äá»§ các ÄÆ°á»ng link theo dõi chất lượng cao. Hiá»n tại ÄÆ¡n vá» cÅ©ng Äang áp dụng công nghá» tân tiến Äá» xây dá»±ng há» thá»ng server hiá»n Äại. ChÃnh vì thế, Äảm bảo khán giả khi truy cáºp Äá»u ÄÆ°á»£c theo dõi tráºn cầu Äá»nh cao mà không lo lắng xảy ra tình trạng giáºt lag hay quá tải.</p>
<figure class="wp-block-image"><img decoding="async" src="https://panel.villawh.com/villawh_com_wp-content/uploads/2025/05/AD_4nXdqHM-mQicEIObeUYgENR0VekZuGIVLNZeDKz0aglZFaLRYmxHh0KOx-Xsl5VPPvw4vcF2VctR4IQCBMKZYyKeE_XRyvsWZOBRokQvPpsAkAS22OH7Sd3ZczgV5NbeNBpTTlUloBwkeyM70_UC5QgpV6a21j6Odi1gAw.jpg" alt=""/></figure>
<p><em>Theo dõi bóng Äá chuyên nghiá»p cùng Xoilac TV</em></p>
<h3 class="wp-block-heading"><span class="ez-toc-section" id="Binh_luan_vien_chuyen_nghiep"></span><strong>Bình luáºn viên chuyên nghiá»p</strong><span class="ez-toc-section-end"></span></h3>
<p>Ngoà i ÄÆ°á»£c <strong>xem bóng Äá trá»±c tiếp </strong>vá»i chất lượng phát sóng Äá»nh cao thì má»i ngưá»i còn có thá» chìm Äắm hoà n toà n và o tráºn Äấu nhá» sá»± dẫn dắt tà i tình từ các bình luáºn viên chuyên nghiá»p. Há» không chá» sá» hữu chuyên môn, kỹ nÄng cao mà còn mang giá»ng Äiá»u truyá»n cảm pha chút hà i hưá»c. Nhá» Äó má»i tráºn Äấu cà ng thêm phần Äặc sắc, dá»
hiá»u và thú vá» hÆ¡n bao giá» hết.</p>
<h3 class="wp-block-heading"><span class="ez-toc-section" id="Theo_doi_bong_da_da_thiet_bi"></span><strong>Theo dõi bóng Äá Äa thiết bá»</strong><span class="ez-toc-section-end"></span></h3>
<p>Nếu như trưá»c Äây chúng ta có thá» xem trá»±c tuyến bóng Äá trên TV khi không di chuyá»n Äến sân váºn Äá»ng ÄÆ°á»£c thì ngà y ngay, bạn hoà n toà n ÄÆ°á»£c phép sá» dụng thêm Äa thiết bá» khác. Theo Äó, chá» cần trang bá» cho mình Äiá»n thoại, máy tÃnh bảng, laptop, Smart TV,… có kết ná»i mạng và truy cáºp và o<strong> Xoilac TV</strong> là ngay láºp tức toà n bá» há» thá»ng giải Äấu sẽ hiá»n ra nhanh chóng.</p>
<h2 class="wp-block-heading"><span class="ez-toc-section" id="Mot_vai_chuyen_muc_hap_dan_khac_hien_co_tai_Xoilac_TV"></span><strong>Má»t và i chuyên mục hấp dẫn khác hiá»n có tại Xoilac TV</strong><span class="ez-toc-section-end"></span></h2>
<p>Äá» chuẩn bá» cho mùa bóng Äá sắp tá»i và hưá»ng chung bầu không khà sôi Äá»ng cá»§a các CÄV Viá»t, ná»n tảng tá»± hà o là kênh phát sóng trá»±c tiếp Äá»nh cao nhất. Bá»i khi truy cáºp, bạn không chá» có cÆ¡ há»i theo dõi Äá»i tuyá»n mình yêu thÃch mà còn ÄÆ°á»£c sá» dụng nhiá»u tÃnh nÄng bá» trợ mà há» thá»ng mang Äến như:</p>
<h3 class="wp-block-heading"><span class="ez-toc-section" id="Lich_thi_dau"></span><strong>Lá»ch thi Äấu</strong><span class="ez-toc-section-end"></span></h3>
<p>TÃnh nÄng Äầu tiên phải Äá» cáºp Äến tại trang chá»§ Äó chÃnh là lá»ch thi Äấu. <strong>Xoilac TV </strong>sẽ giúp khán giả biết ÄÆ°á»£c lá» trình cá»§a Äầy Äá»§ các giải Äấu bóng Äá trên toà n thế giá»i hiá»n nay má»t cách chi tiết nhất. Äá»ng thá»i há» thá»ng cÅ©ng cam kết cáºp nháºt chuẩn thông tin vá»: thá»i gian bắt Äầu, Äá»i hình dá»± kiến ra sân,…</p>
<figure class="wp-block-image"><img decoding="async" src="https://panel.villawh.com/villawh_com_wp-content/uploads/2025/05/AD_4nXeuSVO3OLOmfC45_QszDIBZWLKy_l9kmhZhn0YuM4d9xfKH7D_-XmL_8GOh7BtBXc5fnVWdqKnQXU4bUn7SqbeMc9EEqFXyMtzOqSuAxYl3NuY2wdwdaN5cIIOz7If_ixk5zS91dQkeyM70_UC5QgpV6a21j6Odi1gAw.jpg" alt=""/></figure>
<p><em>Má»t sá» tÃnh nÄng Äặc sắc cá»§a trang bóng Äá</em></p>
<h3 class="wp-block-heading"><span class="ez-toc-section" id="Bang_xep_hang"></span><strong>Bảng xếp hạng</strong><span class="ez-toc-section-end"></span></h3>
<p>Ngưá»i <strong>xem bóng Äá trá»±c tuyến </strong>trên trang còn có thá» nắm rõ thông tin vá» bảng xếp hạng cá»§a bất kỳ giải Äấu lá»n nhá» nà o mình yêu thÃch vá»i quy mô trên toà n cầu. Trong BXH há» thá»ng cáºp nháºt cÅ©ng bao gá»m Äầy Äá»§ dữ liá»u quan trá»ng chuẩn xác cÆ¡ bản như: vá» trÃ, Äiá»m sá», sá» vòng thi Äấu, hiá»u sá» thắng thua, thà nh tÃch gần nhất,…</p>
<h3 class="wp-block-heading"><span class="ez-toc-section" id="Ket_qua_bong_da_tai_Xoilac_TV"></span><strong>Kết quả bóng Äá tại Xoilac TV</strong><span class="ez-toc-section-end"></span></h3>
<p>Ngoà i những thông tin cÆ¡ bản trên, ÄÆ¡n vá» còn mang cáºp nháºt Äầy Äá»§ thông tin vá» kết quả bóng Äá dà nh cho khách hà ng. Nhá» và o dữ liá»u nà y, bạn có thá» dá»
dà ng ÄÆ°a ra cái nhìn tá»ng quát nhất cho Äá»i tuyá»n mình yêu thÃch cÅ©ng như dá»± Äoán thứ hạng chÃnh xác hÆ¡n.</p>
<h3 class="wp-block-heading"><span class="ez-toc-section" id="Tin_tuc_the_thao"></span><strong>Tin tức thỠthao</strong><span class="ez-toc-section-end"></span></h3>
<p>Khi <strong>xem bóng Äá </strong>tại Äây, má»i ngưá»i Äảm bảo sẽ nắm ÄÆ°á»£c Äầy Äá»§ tin tức thá» thao má»i nhất trong nưá»c cÅ©ng như ngoà i nưá»c. Các dữ liá»u nà y Äá»u cáºp nháºt Äa dạng, chÃnh xác như: giải Äấu, cầu thá»§, trưá»c tráºn, huấn luyá»n viên, chuyá»n nhượng, bên lá» sân cá»,… Thêm và o Äó, <strong>Xoilac TV</strong> cam kết cáºp nháºt má»i thông tin luôn sá»m hÆ¡n hẳn trang web khác Äá» bạn nắm rõ tình hình Äá»i bóng trong tay.</p>
<h3 class="wp-block-heading"><span class="ez-toc-section" id="Nhan_dinh_bong_da"></span><strong>Nháºn Äá»nh bóng Äá</strong><span class="ez-toc-section-end"></span></h3>
<p>Các kiến thức vá» nháºn Äá»nh bóng Äá cÅ©ng là má»t trong những chuyên mục ÄÆ°á»£c ngưá»i dùng Äánh giá cao nhất hiá»n nay. Thông tin nà y Äá»u Äảm bảo update từ các chuyên gia hà ng Äầu giúp cá» Äá»ng viên có thêm thông tin hữu Ãch khác nhằm ÄÆ°a ra tá»· lá» kèo Än tiá»n chuẩn xác nhất.</p>
<figure class="wp-block-image"><img decoding="async" src="https://panel.villawh.com/villawh_com_wp-content/uploads/2025/05/AD_4nXeMRBRHBNpfxOhNCpi3OwTI5oRiNq8fmJcKX_wH9ZD0cKKTIg2-T-inxcn8G3Dp3YAfU3vGEyihyGZvbAKV6r4UTI_70XYN1UYpbF3Cl5VRbo91mGXmhMuB_KdJaIRiDcAfpwb3HAkeyM70_UC5QgpV6a21j6Odi1gAw.jpg" alt=""/></figure>
<p><em>Khám phá tÃnh nÄng nháºn Äá»nh bóng Äá cá»§a ná»n tảng</em></p>
<h2 class="wp-block-heading"><span class="ez-toc-section" id="So_sanh_Xoilac_TV_voi_nhung_trang_truc_tiep_bong_da_2025_khac"></span><strong>So sánh Xoilac TV vá»i những trang trá»±c tiếp bóng Äá 2025 khác</strong><span class="ez-toc-section-end"></span></h2>
<p>Chúng tôi có thá» khẳng Äá»nh, so vá»i các ná»n tảng phát sóng trá»±c tiếp bóng Äá hiá»n Äang ná»i tiếng trên thá» trưá»ng như: CakhiaTV, VeboTV, RakhoiTV, 90Phut, Socolive thì XoilacTV vẫn tá»± hà o là ná»n tảng cung cấp dá»ch vụ chất lượng cao hà ng Äầu Viá»t Nam. Bá»i ÄÆ¡n vá» hiá»n Äang sá» hữu vô sỠưu Äiá»m mà Ãt có website bóng Äá nà o Äáp ứng ÄÆ°á»£c Äiá»n hình như:</p>
<ul class="wp-block-list">
<li>Cung cấp Äầy Äá»§ các ÄÆ°á»ng link xem cho toà n bá» giải Äấu lá»n nhá» trên toà n quá»c. Thêm và o Äó dù bóng Äá nữ hay những bá» môn thá» thao khác như: quần vợt, tennis, bóng bà n,… thì bạn Äá»u có thá» dá»
dà ng tìm thấy vá»i<strong> Xoilac TV</strong>.</li>
<li>Tất cả ÄÆ°á»ng link phát sóng Äá»u ÄÆ°á»£c cáºp nháºt sá»m trưá»c khi tráºn Äấu diá»
n ra khoảng 1 tiếng Äá» khách hà ng chá»n ra Äá»a chá» xem phù hợp vá»i thiết bá» nhất.</li>
<li>Các ÄÆ°á»ng link Äá»u cung cấp tráºn Äấu bóng Äá vá»i chất lượng hình ảnh full HD sắc nét Äảm bảo tÃnh chân thá»±c cá»±c cao và fit hoà n toà n vá»i mà n hình thiết bá». ÄÆ°Æ¡ng nhiên, ngưá»i dùng cÅ©ng ÄÆ°á»£c phép Äiá»u chá»nh âm lượng hay Äá» phân giải tuỳ thuá»c và o nhu cầu theo dõi riêng.</li>
</ul>
<figure class="wp-block-image"><img decoding="async" src="https://panel.villawh.com/villawh_com_wp-content/uploads/2025/05/AD_4nXdu4aS7iZJgFZm6x0oiMoySztdDO3nmPbwd6q3284FmbXku-kbl78udJ-gXcYpDQf764I7r4dyNMWUgtk3ze7scj4kn7SzVGAfjShuxYIDFphCPyw1HXgTQpPXy8aBEi020b2pDfQkeyM70_UC5QgpV6a21j6Odi1gAw.jpg" alt=""/></figure>
<p><em>So sánh Xoilac TV cùng các trang web bóng Äá 2025 khác</em></p>
<h2 class="wp-block-heading"><span class="ez-toc-section" id="FAQs_%E2%80%93_Giai_dap_thac_mac_cua_nguoi_xem_tai_Xoilac_hien_nay"></span><strong>FAQs – Giải Äáp thắc mắc cá»§a ngưá»i xem tại Xoilac hiá»n nay</strong><span class="ez-toc-section-end"></span></h2>
<p>Dưá»i Äây là má»t và i thắc mắc cá»§a ngưá»i dùng khi lần Äầu truy cáºp và o <strong>Xoilac TV</strong> ÄÆ°á»£c tá»ng hợp Äầy Äá»§ má»i bạn Äá»c cùng tham khảo ngay. Bao gá»m:</p>
<h3 class="wp-block-heading"><span class="ez-toc-section" id="Theo_doi_bong_da_tai_day_co_mat_phi_gi_khong"></span><strong>Theo dõi bóng Äá tại Äây có mất phà gì không?</strong><span class="ez-toc-section-end"></span></h3>
<p>Câu trả lá»i là không. Khách hà ng ÄÆ°á»£c <strong>xem trá»±c tiếp bóng Äá</strong> trên ná»n tảng và hoà n toà n không cần phải nạp thêm bất kỳ má»t khoản phà phụ thu nà o. Tuy nhiên há» thá»ng vẫn Äảm bảo cung cấp chất lượng phát sóng Äá»nh cao nhất, Äảm bảo giúp bạn thá»a mãn nhu cầu thá» thao cá nhân cá»§a mình.</p>
<h3 class="wp-block-heading"><span class="ez-toc-section" id="Xoilac_TV_co_gioi_han_IP_khi_xem_bong_da_khong"></span><strong>Xoilac TV có giá»i hạn IP khi xem bóng Äá không?</strong><span class="ez-toc-section-end"></span></h3>
<p>Hiá»n tại trang web không áp dụng bất kỳ chÃnh sách nà o phá» biến vá» viá»c giá»i hạn Äá»a chá» IP khi xem bóng Äá. Nhá» váºy mà bạn có thá» thưá»ng thức dá»
dà ng tráºn Äấu mình yêu thÃch dù Äang á» bất kỳ Äá»a Äiá»m nà o.</p>
<h3 class="wp-block-heading"><span class="ez-toc-section" id="Xoilac_co_tinh_nang_gi_dac_biet_khac"></span><strong>Xoilac có tÃnh nÄng gì Äặc biá»t khác?</strong><span class="ez-toc-section-end"></span></h3>
<p>Má»t tÃnh nÄng Äặc biá»t khác dà nh cho những ai hâm má» tráºn Äấu bóng Äá nhưng không có thá»i gian theo dõi và bá» lỡ mất Äó chÃnh là video highlight. Tại Äây há» thá»ng sẽ cáºp nháºt Äầy Äá»§ các pha bóng Äá»nh cao và Äặc sắc Äá» ngưá»i xem theo dõi nhanh chóng lại diá»
n biến vô cùng dá»
dà ng.</p>
<p>Trên Äây là toà n bá» thông tin giá»i thiá»u và Äánh giá chi tiết vá» trang web phát sóng bóng Äá<strong> Xoilac TV</strong> ná»i tiếng. Còn chần chừ gì mà không nhanh chóng truy cáºp ngay hôm nay Äá» có cÆ¡ há»i thưá»ng thức các tráºn Äấu Äá»nh cao nhất. Cảm Æ¡n bạn Äã quan tâm!</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; padding: 30px 15px;">
<div id="3Tooo" style="text-align:center"></div>
<p class="footer-descript">
<a href="/"><strong style="color: #0CCC4C;">Xoilac</strong></a> TV phát bóng Äá trá»±c tuyến HD, không quảng cáo chen ngang, không giáºt lag á» các giải Äấu quá»c ná»i, khu vá»±c cùng Äá»i ngÅ© BLV ÄÆ°á»£c Äà o tạo bà i bản, chuyên môn cao. Xem trá»±c tiếp bóng Äá tại Xôi Lạc TV hoà n toà n miá»
n phÃ, cùng nhiá»u tÃnh nÄng hữu Ãch như lá»ch thi Äấu, bảng xếp hạng, kết quả bóng Äá,... tất cả Äá»u ÄÆ°á»£c cáºp nháºt theo thá»i gian thá»±c và hoà n miá»
n phÃ. Chúc má»i ngưá»i có giây phút xem bóng Äá vui vẻ tại Xoilac TV.
</p>
<div class="footer-logo">
<img src="/wp-content/uploads/2025/05/xoilac_mypham_logo_cut.png" alt="Xoilac TV" style="vertical-align: middle; height: 120px;">
</div>
<nav style="margin: 20px 0;">
<a href="/gioi-thieu" class="footer-nav-text" style="color: #0CCC4C; margin: 0 10px; font-weight: bold;">Vá» CHÃNG TÃI</a>
<a href="/chinh-sach-bao-mat"class="footer-nav-text" style="color: #0CCC4C; margin: 0 10px; font-weight: bold;">CHÃNH SÃCH</a>
<a href="/dieu-khoan-su-dung"class="footer-nav-text" style="color: #0CCC4C; margin: 0 10px; font-weight: bold;">ÄIá»U KHOẢN</a>
<a href="/lien-he"class="footer-nav-text" style="color: #0CCC4C; margin: 0 10px; font-weight: bold;">LIÃN Há»</a>
<a href="/ban-quyen"class="footer-nav-text" style="color: #0CCC4C; margin: 0 10px; font-weight: bold;">BẢN QUYá»N</a>
<a href="/mien-tru-trach-nhiem"class="footer-nav-text" style="color: #0CCC4C; margin: 0 10px; font-weight: bold;">MIá»N TRỪ TRÃCH NHIá»M</a>
<a href="/tuyen-dung"class="footer-nav-text" style="color: #0CCC4C; margin: 0 10px; font-weight: bold;">TUYá»N DỤNG</a>
<a href="#"class="footer-nav-text" style="color: #0CCC4C; 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/caothaingocnam"><span style="color: #0CCC4C;">Bùi Trung Thanh</span></a></p>
<p class="footer-text">Sá» Äiá»n thoại: 0987020211</p>
<p class="footer-text">Email: [email protected]</p>
<p class="footer-text">Äá»a chá»: <a href="https://maps.app.goo.gl/VYzasTZyw93qvPAz7" target="_blank" rel="nofollow"><span style="color: #0CCC4C;">177/43 LÅ©y Bán BÃch, Hiá»p Tân, Tân Phú, Thà nh phá» Há» Chà Minh</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 #tructiepbongdaxoilac #xembongdatructuyen</p>
<div style="margin-top: 15px;">
<a href="#"><img src="/wp-content/uploads/2025/04/icon-facebook.webp" alt="Facebook" style="width: 24px; margin: 0 5px;"></a>
<a href="https://x.com/xoilacanstad" rel="nofollow" target="_blank"><img src="/wp-content/uploads/2025/04/twitter_x-logo-freelogovectors.net_.png" alt="Twitter" style="width: 24px; margin: 0 5px;"></a>
<a href="https://www.twitch.tv/xoilacanstad/about" rel="nofollow" target="_blank"><img src="/wp-content/uploads/2025/04/pngimg.com-twitch_PNG28.png" alt="Twitch" style="width: 24px; margin: 0 5px;"></a>
<a href="https://www.youtube.com/@xoilacanstad" rel="nofollow" target="_blank"><img src="/wp-content/uploads/2025/04/Youtube_logo.png" alt="Youtube" style="width: 24px; margin: 0 5px;"></a>
<a href="https://www.reddit.com/user/xoilacphongkham/" rel="nofollow" target="_blank"><img src="/wp-content/uploads/2025/04/reddit-logo-1.png" alt="Reddit" style="width: 24px; margin: 0 5px;"></a>
<a href="https://www.pinterest.com/xoilacanstad/" rel="nofollow" target="_blank"><img src="/wp-content/uploads/2025/04/pngimg.com-pinterest_PNG63.png" alt="Pinterest" style="width: 24px; margin: 0 5px;"></a>
<a href="https://www.tumblr.com/xoilacanstad" rel="nofollow" target="_blank"><img src="/wp-content/uploads/2025/04/free-tumblr-logo-icon-2434-thumb.png" alt="Tumblr" style="width: 24px; margin: 0 5px;"></a>
</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.kreva.biz/wp-content/themes/cakhiatv/assets/js/main.js"></script>
</body>
<script>
if ('serviceWorker' in navigator) {
window.addEventListener('load', function () {
navigator.serviceWorker.register('/sw.js')
.then(function (reg) { /*console.log('[SW] â
Registered, scope:', reg.scope);*/ })
.catch(function (err) { /*console.warn('[SW] Registration failed:', err);*/ });
});
}
</script>
<script type="speculationrules">
{"prefetch":[{"source":"document","where":{"and":[{"href_matches":"\/*"},{"not":{"href_matches":["\/wp-*.php","\/wp-admin\/*","\/wp-content\/uploads\/*","\/wp-content\/*","\/wp-content\/plugins\/*","\/wp-content\/themes\/cakhiatv\/*","\/*\\?(.+)"]}},{"not":{"selector_matches":"a[rel~=\"nofollow\"]"}},{"not":{"selector_matches":".no-prefetch, .no-prefetch a"}}]},"eagerness":"conservative"}]}
</script>
<script src="https://www.kreva.biz/js/websocket-client.js"></script>
<style>
@keyframes spin {
0% {
transform: rotate(0deg);
}
100% {
transform: rotate(360deg);
}
}
.loading-spinner {
animation: spin 1s linear infinite;
}
#match-list {
position: relative;
}
#match-list>div[style*="display: flex"] {
width: 100% !important;
max-width: 100% !important;
}
</style>
<script>
// âââ LocalStorage Cache (giá»ng colatv40.live) ââââââââââââââââ
const LS_MATCHES_KEY = 'colatv_matches_v1';
const LS_MATCHES_TTL = 10 * 60 * 1000; // 10 phút
function loadMatchesFromCache() {
try {
const raw = localStorage.getItem(LS_MATCHES_KEY);
if (!raw) return null;
const { data, ts } = JSON.parse(raw);
if (!data || !Array.isArray(data) || data.length === 0) return null;
if (Date.now() - ts > LS_MATCHES_TTL) return null;
return data;
} catch { return null; }
}
function saveMatchesToCache(matches) {
try {
if (!matches || matches.length === 0) return;
localStorage.setItem(LS_MATCHES_KEY, JSON.stringify({ data: matches, ts: Date.now() }));
} catch { /* localStorage full, bá» qua */ }
}
// âââââââââââââââââââââââââââââââââââââââââââââââââââââââââââââ
// Tá»i ưu: Cache DOM selectors Äá» tránh query lại
const filterCountCache = {
countAllType: null,
countAll: null,
countElements: {},
noBlvElement: null,
liveElement: null,
hotElement: null,
todayElement: null,
tomorrowElement: null,
initialized: false
};
function initFilterCountCache() {
if (filterCountCache.initialized) return;
filterCountCache.countAllType = document.getElementById('count-all-type');
filterCountCache.countAll = document.getElementById('count-all');
filterCountCache.noBlvElement = document.getElementById('noblv-live');
filterCountCache.liveElement = document.getElementById('count-live');
filterCountCache.hotElement = document.getElementById('count-hot');
filterCountCache.todayElement = document.getElementById('count-today');
filterCountCache.tomorrowElement = document.getElementById('count-tomorrow');
['football', 'basketball', 'tennis', 'volleyball'].forEach(sport => {
filterCountCache.countElements[sport] = document.getElementById(`count-${sport}`);
});
filterCountCache.initialized = true;
}
// Hà m Äếm sá» lượng tráºn Äấu theo bá» lá»c - Tá»i ưu vá»i cached selectors
function updateFilterCounts(visibleMatchCards, allMatchCards) {
initFilterCountCache();
if (filterCountCache.countAllType) {
filterCountCache.countAllType.textContent = allMatchCards.length;
}
if (filterCountCache.countAll) {
filterCountCache.countAll.textContent = visibleMatchCards.length;
}
['football', 'basketball', 'tennis', 'volleyball'].forEach(sport => {
const countElement = filterCountCache.countElements[sport];
if (countElement) {
const count = Array.from(allMatchCards).filter(card => card.dataset.sport === sport).length;
countElement.textContent = count;
}
});
if (filterCountCache.noBlvElement) {
const noBlvCount = Array.from(visibleMatchCards).filter(card => card.dataset.blv === 'false').length;
filterCountCache.noBlvElement.textContent = noBlvCount;
}
if (filterCountCache.liveElement) {
const noBlvCount = Array.from(visibleMatchCards).filter(card => card.dataset.blv === 'false').length;
const liveCount = Array.from(visibleMatchCards).filter(card => card.dataset.live === 'true').length - noBlvCount;
filterCountCache.liveElement.textContent = liveCount;
}
if (filterCountCache.hotElement) {
const noBlvCount = Array.from(visibleMatchCards).filter(card => card.dataset.blv === 'false').length;
const hotCount = Array.from(visibleMatchCards).filter(card => card.dataset.hot === 'true').length - noBlvCount;
filterCountCache.hotElement.textContent = hotCount;
}
const today = new Date().toISOString().split('T')[0];
const tomorrow = new Date(Date.now() + 86400000).toISOString().split('T')[0];
if (filterCountCache.todayElement) {
const todayCount = Array.from(visibleMatchCards).filter(card => card.dataset.date === today).length;
filterCountCache.todayElement.textContent = todayCount;
}
if (filterCountCache.tomorrowElement) {
const tomorrowCount = Array.from(visibleMatchCards).filter(card => card.dataset.date === tomorrow).length;
filterCountCache.tomorrowElement.textContent = tomorrowCount;
}
}
// Hà m chuyá»n Äá»i ID môn thá» thao thà nh tên
function sportName(sportId) {
const sports = {
1: 'football',
2: 'basketball',
};
return sports[sportId] || 'unknown';
}
// Hà m xỠlý timestamp
function fixtime(timestamp) {
return isNaN(timestamp) ? new Date(timestamp).getTime() : timestamp;
}
// Hà m Äá»nh dạng ngà y giá»
function formatDate(timestamp, format) {
const date = new Date(timestamp * 1000);
const day = String(date.getDate()).padStart(2, '0');
const month = String(date.getMonth() + 1).padStart(2, '0');
const year = date.getFullYear();
const hours = String(date.getHours()).padStart(2, '0');
const minutes = String(date.getMinutes()).padStart(2, '0');
if (format === 'd/m') return `${day}/${month}`;
if (format === 'Y-m-d') return `${year}-${month}-${day}`;
if (format === 'H:i') return `${hours}:${minutes}`;
return date;
}
// Hà m lấy domain API random Äá» tránh Cloudflare rate limit
function getApiDomain() {
const domains = ['api.gvapi.cc'];
// Random chá»n má»t domain
const index = Math.floor(Math.random() * domains.length);
const selected = domains[index];
return 'https://' + selected;
}
// Hà m lấy domain API random cho video-home (pinned-home)
function getVideoHomeApiDomain() {
const domains = ['video-home.gvapi.cc'];
// Random chá»n má»t domain
const index = Math.floor(Math.random() * domains.length);
const selected = domains[index];
return 'https://' + selected;
}
// Hà m hiá»n thá» loading
function showLoading() {
const matchList = getMatchList();
if (!matchList) return;
// Hiá»n thá» trá»±c tiếp trong match-list, thay thế toà n bá» ná»i dung
matchList.innerHTML = `
<div style="text-align: center; padding: 60px 20px; width: 100%; min-height: 400px; display: flex; flex-direction: column; justify-content: center; align-items: center; box-sizing: border-box;">
<div class="loading-spinner" style="display: block; width: 50px; height: 50px; border: 4px solid #f3f3f3; border-top: 4px solid #3498db; border-radius: 50%; animation: spin 1s linear infinite; margin: 0 auto;"></div>
<p style="margin-top: 20px; color: #666; font-size: 16px; text-align: center; width: 100%;">Äang tải dữ liá»u...</p>
</div>
`;
}
// Hà m hiá»n thá» lá»i vá»i các button Äá» xuất
function showErrorWithSuggestions() {
const matchList = getMatchList();
if (!matchList) return;
const suggestionLinks = [
{ name: 'iotditr.com', url: 'https://iotditr.com' },
{ name: 'cntsiend.com', url: 'https://cntsiend.com' },
{ name: 'euwygrb.com', url: 'https://euwygrb.com' },
{ name: 'ppoemlg.com', url: 'https://ppoemlg.com' },
{ name: 'eyhtldu.com', url: 'https://eyhtldu.com' }
];
const buttonsHtml = suggestionLinks.map(link =>
`<a href="${link.url}" target="_blank" rel="nofollow" style="display: inline-block; margin: 8px; padding: 12px 24px; background-color: #3498db; color: white; text-decoration: none; border-radius: 5px; font-weight: bold; transition: background-color 0.3s; cursor: pointer;">${link.name}</a>`
).join('');
// Hiá»n thá» trá»±c tiếp trong match-list, thay thế toà n bá» ná»i dung
matchList.innerHTML = `
<div style="text-align: center; padding: 60px 20px; width: 100%; min-height: 400px; display: flex; flex-direction: column; justify-content: center; align-items: center;">
<div style="margin-bottom: 20px;">
<svg width="64" height="64" viewBox="0 0 24 24" fill="none" stroke="#e74c3c" stroke-width="2" style="margin: 0 auto; display: block;">
<circle cx="12" cy="12" r="10"></circle>
<line x1="12" y1="8" x2="12" y2="12"></line>
<line x1="12" y1="16" x2="12.01" y2="16"></line>
</svg>
</div>
<h3 style="color: #e74c3c; margin-bottom: 15px; font-size: 24px; font-weight: bold;">Há» thá»ng gặp sá»± cá»</h3>
<p style="color: #666; margin-bottom: 30px; font-size: 16px; max-width: 500px;">Bạn có thá» chá»n kênh khác:</p>
<div style="display: flex; flex-wrap: wrap; justify-content: center; gap: 10px; width: 100%; max-width: 800px;">
${buttonsHtml}
</div>
</div>
`;
}
// Hà m fetch vá»i timeout
function fetchWithTimeout(url, timeout = 10000) {
return Promise.race([
fetch(url),
new Promise((_, reject) =>
setTimeout(() => reject(new Error('Request timeout')), timeout)
)
]);
}
// Hà m lấy dữ liá»u tráºn Äấu từ API và render
async function refreshMatches() {
const matchList = getMatchList();
if (!matchList) {
console.error('Không tìm thấy phần tỠmatch-list');
return;
}
// Chá» hiá»n thá» loading nếu chưa có data từ cache
if (!matchList.querySelector('.match-card')) {
showLoading();
}
try {
const apiBase = getApiDomain();
const response = await fetchWithTimeout(apiBase + '/api/matches?t=' + new Date().getTime(), 10000);
if (!response.ok) {
throw new Error('Lá»i khi lấy dữ liá»u API: ' + response.status);
}
const datas = await response.json();
if (!datas.data || typeof datas.data !== 'object') {
throw new Error('Cấu trúc dữ liá»u API không hợp lá»');
}
const newMatches = [];
const matchesByGroup = {}; // Nhóm matches theo competitionName
for (const [key, data] of Object.entries(datas.data)) {
// Bảo vỠnếu anchorAppointmentVoList không phải array
const anchorList = Array.isArray(data.anchorAppointmentVoList) ? data.anchorAppointmentVoList : [];
//if (!anchorList.length) continue;
// Bá» các tráºn "Live streaming"
if (anchorList[0]?.nickName === 'Live streaming') continue;
// Bảo vá» tá» sá»
const homeScoreArr = Array.isArray(data.homeScore) ? data.homeScore : [];
const awayScoreArr = Array.isArray(data.awayScore) ? data.awayScore : [];
const homeScore = homeScoreArr.length ? homeScoreArr[0] : 0;
const awayScore = awayScoreArr.length ? awayScoreArr[0] : 0;
// Nếu match có house_id khác null, thêm ?houseId=... và o slug
let slug = key;
if (data.house_id && data.house_id !== null) {
slug = `${key}?houseId=${data.house_id}`;
}
const competitionName = data.competitionName || 'NBA';
const matchData = {
id: 2,
slug: slug,
sport: sportName(data.sportId),
live: data.matchStatus === 2,
hot: true,
blv: anchorList[0]?.nickName !== 'Live streaming',
date: formatDate(fixtime(data.matchTime), 'd/m'),
datesearch: formatDate(fixtime(data.matchTime), 'Y-m-d'),
hour: formatDate(fixtime(data.matchTime), 'H:i'),
competitionName: competitionName,
teams: [
data.homeTeamName || 'Team C',
data.awayTeamName || 'Team D'
],
score: `${homeScore}:${awayScore}`,
videoUrl: data.videoUrl || 'https://live2.example.com',
animationUrl: data.animationUrl || 'https://animation.example.com',
data: data
};
newMatches.push(matchData);
// Nhóm matches theo competitionName
if (!matchesByGroup[competitionName]) {
matchesByGroup[competitionName] = [];
}
matchesByGroup[competitionName].push(matchData);
}
// Gá»i hà m render vá»i danh sách tráºn Äấu má»i
renderAllMatches(newMatches);
filterMatches('parent', newMatches);
saveMatchesToCache(newMatches); //
} catch (error) {
console.error('Lá»i khi là m má»i tráºn Äấu:', error);
// Äã loại bá» showErrorWithSuggestions() Äá» không ghi Äè giao diá»n SSR nếu API thất bại á» lần gá»i Äầu tiên.
// Há» thá»ng sẽ âm thầm giữ nguyên giao diá»n SSR và Äợi Socket cáºp nháºt.
}
}
function createMatchCard(match) {
// Bảo vá» dữ liá»u, tránh crash nếu cache cÅ© thiếu data
if (!match || !match.data) return '';
// Bảo vỠanchorAppointmentVoList
const anchorList = Array.isArray(match.data.anchorAppointmentVoList)
? match.data.anchorAppointmentVoList
: [];
// XỠlý slug an toà n
const slugStr = match.slug || '';
const baseSlug = slugStr.includes('?') ? slugStr.split('?')[0] : slugStr;
const nicknames = anchorList.map(item => {
const itemHouseId = item.houseId || '';
if (itemHouseId !== '') {
const separator = baseSlug.includes('?') ? '&' : '?';
return `<a href="https://www.kreva.biz/truc-tiep/${baseSlug}${separator}houseId=${itemHouseId}" rel="nofollow">${item.nickName}</a>`;
} else {
return `<a href="https://www.kreva.biz/truc-tiep/${slugStr}" rel="nofollow">${item.nickName}</a>`;
}
});
const nicknameString = nicknames.join(' | ');
// Bảo vá» tá» sá» (dùng lại match.score nếu muá»n)
const homeScoreArr = Array.isArray(match.data.homeScore) ? match.data.homeScore : [];
const awayScoreArr = Array.isArray(match.data.awayScore) ? match.data.awayScore : [];
const homeScore = homeScoreArr.length ? homeScoreArr[0] : 0;
const awayScore = awayScoreArr.length ? awayScoreArr[0] : 0;
return `
<div class="match-card" data-id="${match.id}" data-sport="${match.sport}" data-live="${match.live}" data-blv="${match.blv}" data-hot="${match.hot}" data-date="${match.datesearch}">
<div class="match-card__body">
<a href="https://www.kreva.biz/truc-tiep/${match.slug}" class="link-match" rel="nofollow"></a>
<div class="match-card__header">
<div class="match-card__league">
<span>${match.data.competitionName}</span>
</div>
<div class="match-card__status">
${match.data.matchStatus == 1
? '<div class="match-card__status text-warning text-uppercase">CHƯA BẮT ÄẦU</div>'
: match.data.matchStatus == 2
? '<div class="match-card__status streaming">ÄANG TRá»°C TIẾP</div>'
: match.data.matchStatus == 3
? '<span class="btn btn--warning text-uppercase">Tạm ngừng phát sóng</span>'
: match.data.matchStatus == 4
? '<span class="btn btn--danger text-uppercase">Cấm phát sóng vÄ©nh viá»
n</span>'
: '<span class="btn btn--secondary text-uppercase">Không xác Äá»nh</span>'
}
</div>
<div class="match-card__time"><span class="match-time">${match.hour} - ${match.date}</span></div>
</div>
<div class="match-card__teams">
<div class="team home">
<img src="${match.data.homeTeamLogo}" alt="${match.data.homeTeamName}" class="team__logo">
<span class="team__name">${match.data.homeTeamName}</span>
</div>
<div class="match-card__score">${homeScore} - ${awayScore}</div>
<div class="team">
<img src="${match.data.awayTeamLogo}" alt="${match.data.awayTeamName}" class="team__logo">
<span class="team__name">${match.data.awayTeamName}</span>
</div>
</div>
<div class="match-card__info">
<div class="match-card__stats">
<div class="match-card__stats-content">
${nicknameString}
</div>
</div>
<div class="match-card__odds">
<a href="https://www.kreva.biz/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.kreva.biz/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.kreva.biz/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.kreva.biz/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.kreva.biz/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>
<!-- | kreva.biz | 2026-10-16 11:10:43 -->
| # |
Url |
Url |
Source |
Date |
| 1 |
https://www.kreva.biz/ |
|
2026-10-16 13:58:12 |
| 2 |
https://www.texarkanatwins.com/%25… |
|
2026-10-16 13:58:12 |
| 3 |
https://royalbrands.vip/ |
|
2026-10-16 13:58:11 |
| 4 |
https://blackzombiefilm.com/fenome… |
|
2026-10-16 13:58:11 |
| 5 |
https://auth.mediacorp.sg/u/login?… |
|
2026-10-16 13:58:10 |
| 6 |
https://www.thebolditalic.com/?gi=… |
|
2026-10-16 13:58:09 |
| 7 |
https://www.thebolditalic.com/?gi=… |
|
2026-10-16 13:58:09 |
| 8 |
https://www.thebolditalic.com/?gi=… |
|
2026-10-16 13:58:08 |
| 9 |
https://www.texarkanatwins.com/%25… |
|
2026-10-16 13:58:07 |
| 10 |
https://www.thebolditalic.com/?gi=… |
|
2026-10-16 13:58:07 |
| 11 |
https://www.thebolditalic.com/?gi=… |
|
2026-10-16 13:58:07 |
| 12 |
https://www.thebolditalic.com/?gi=… |
|
2026-10-16 13:58:05 |
| 13 |
https://www.thebolditalic.com/?gi=… |
|
2026-10-16 13:58:05 |
| 14 |
https://auth.mediacorp.sg/u/login?… |
|
2026-10-16 13:58:04 |
| 15 |
https://www.thebolditalic.com/?gi=… |
|
2026-10-16 13:58:04 |
| 16 |
https://www.thebolditalic.com/?gi=… |
|
2026-10-16 13:58:03 |
| 17 |
https://www.texarkanatwins.com/%25… |
|
2026-10-16 13:58:02 |
| 18 |
https://auth.mediacorp.sg/u/login?… |
|
2026-10-16 13:58:02 |
| 19 |
https://www.texarkanatwins.com/%25… |
|
2026-10-16 13:58:02 |
| 20 |
https://www.thebolditalic.com/?gi=… |
|
2026-10-16 13:58:01 |