2026-04-21 15:29:29 +08:00
|
|
|
<!doctype html>
|
2026-06-03 15:42:58 +08:00
|
|
|
<html lang="en">
|
|
|
|
|
<head>
|
|
|
|
|
<meta charset="UTF-8" />
|
|
|
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1" />
|
|
|
|
|
<title>Luxsin X9 Controller</title>
|
|
|
|
|
<style>
|
|
|
|
|
body { margin:0; display:flex; align-items:center; justify-content:center; min-height:100vh; background:#000; color:rgba(255,255,255,.5); font-family:-apple-system,sans-serif; }
|
|
|
|
|
.spinner { width:24px; height:24px; border:3px solid rgba(255,255,255,.15); border-top-color:#00FFF6; border-radius:50%; animation:spin .8s linear infinite; margin-right:12px; }
|
|
|
|
|
@keyframes spin { to { transform:rotate(360deg); } }
|
|
|
|
|
</style>
|
|
|
|
|
</head>
|
|
|
|
|
<body>
|
|
|
|
|
<div class="spinner"></div>
|
|
|
|
|
<span>Loading…</span>
|
|
|
|
|
<script>
|
|
|
|
|
(function () {
|
|
|
|
|
var ua = navigator.userAgent;
|
|
|
|
|
var chromeMatch = ua.match(/Chrome\/(\d+)/);
|
|
|
|
|
var isAndroid = /Android/.test(ua);
|
|
|
|
|
var chromeVersion = chromeMatch ? parseInt(chromeMatch[1], 10) : 999;
|
|
|
|
|
|
|
|
|
|
var currentPath = location.pathname;
|
|
|
|
|
var basePath = currentPath.substring(0, currentPath.lastIndexOf("/") + 1);
|
|
|
|
|
|
|
|
|
|
var target;
|
|
|
|
|
if (isAndroid && chromeVersion < 100) {
|
|
|
|
|
target = basePath + "legacy/i.legacy.html";
|
|
|
|
|
} else {
|
|
|
|
|
target = basePath + "modern/i.modern.html";
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
var qs = location.search || "";
|
|
|
|
|
var hash = location.hash || "";
|
|
|
|
|
location.replace(target + qs + hash);
|
|
|
|
|
})();
|
|
|
|
|
</script>
|
|
|
|
|
</body>
|
2026-04-21 15:29:29 +08:00
|
|
|
</html>
|